This question is locked. New answers and comments are not allowed.
Hello,
I'm in the process of developing a Cordova Plugin which reads the carrier name and the current signal strength.
I already got the Plugin to spit out the carrier name, but the getSignalStrength method won't return anything. (The callback on the JS Side never gets called)
This is my Java Class:
Is there something essential that I'm missing?
Thanks in advance,
Jonathan Jenne
I'm in the process of developing a Cordova Plugin which reads the carrier name and the current signal strength.
I already got the Plugin to spit out the carrier name, but the getSignalStrength method won't return anything. (The callback on the JS Side never gets called)
This is my Java Class:
01.package com.inhji.cordova.plugin;02. 03.import org.json.JSONArray;04.import org.json.JSONException;05.import org.json.JSONObject;06. 07.import android.content.Intent;08.import android.net.Uri;09.import android.text.Html;10.import android.util.Log;11. 12.import android.content.Context;13.import android.telephony.TelephonyManager;14. 15.import org.apache.cordova.CordovaPlugin;16.import org.apache.cordova.CallbackContext;17.import org.apache.cordova.PluginResult;18.import org.apache.cordova.LOG;19. 20.import android.telephony.CellInfo;21.import android.telephony.CellInfoCdma;22.import android.telephony.CellInfoGsm;23.import android.telephony.CellInfoLte;24.import android.telephony.CellSignalStrengthCdma;25.import android.telephony.CellSignalStrengthGsm;26.import android.telephony.CellSignalStrengthLte;27. 28.public class Telephony extends CordovaPlugin {29. private static final String TAG = "Telephony";30. public String carrierName;31. public int signalStrength = 0;32. 33. @Override34. public boolean execute(String action, JSONArray args, CallbackContext ctx) throws JSONException {35. // signal strength36. if ("getSignalStrength".equals(action)) {37. getSignalStrength(ctx);38. return true;39. }40. // provider information41. else if("getCarrier".equals(action)) {42. getCarrierName(ctx);43. return true;44. } 45. // throw method not found exception46. else {47. return false;48. }49. }50. 51. private void getSignalStrength(CallbackContext ctx) {52. signalStrength = 0;53. 54. 55. try {56. Context context = cordova.getActivity().getApplicationContext();57. final TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);58. for (final CellInfo info : tm.getAllCellInfo()) {59. if (info instanceof CellInfoGsm) {60. final CellSignalStrengthGsm gsm = ((CellInfoGsm) info).getCellSignalStrength();61. signalStrength = gsm.getDbm();62. } else if (info instanceof CellInfoCdma) {63. final CellSignalStrengthCdma cdma = ((CellInfoCdma) info).getCellSignalStrength();64. signalStrength = cdma.getDbm();65. } else if (info instanceof CellInfoLte) {66. final CellSignalStrengthLte lte = ((CellInfoLte) info).getCellSignalStrength();67. signalStrength = lte.getDbm();68. } else {69. throw new Exception("Unknown type of cell signal!");70. }71. }72. } catch (Exception e) {73. Log.e(TAG, "Unable to obtain cell signal information", e);74. //throw new Exception("Unable to obtain cell signal information!");75. PluginResult result = new PluginResult(PluginResult.Status.ERROR, "Unable to obtain cell signal information");76. ctx.sendPluginResult(result);77. }78. 79. 80. // Just a heads up: It seems that some devices (looking at you Samsung) don't 81. // properly implement getAllCellInfo() and will return null.82. 83. PluginResult result = new PluginResult(PluginResult.Status.OK, signalStrength);84. ctx.sendPluginResult(result);85. }86. 87. private void getCarrierName(CallbackContext ctx) {88. // cannot find symbol context89. Context context = cordova.getActivity().getApplicationContext();90. TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);91. carrierName = manager.getNetworkOperatorName();92. 93. PluginResult result = new PluginResult(PluginResult.Status.OK, carrierName);94. ctx.sendPluginResult(result);95. }96. 97. 98.}Is there something essential that I'm missing?
Thanks in advance,
Jonathan Jenne