0
我已經嘗試使用此鏈接上提到的代碼How to send a SMS using SMSmanager in Dual SIM mobile? 我用於simID的名稱是「isms_msim」。如何使用雙SIM卡手機Moto E(android版本4.4.4)中的java反射發送短信?
try {
if (simID == 0) {
name = "isms";
} else if (simID == 1) {
name = "isms_msim";
} else {
throw new Exception("can not get service which for sim '" + simID + "', only 0,1 accepted as values");
}
Method method = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", String.class);
method.setAccessible(true);
Object param = method.invoke(null, name);
method = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", IBinder.class);
method.setAccessible(true);
Object stubObj = method.invoke(null, param);
if (Build.VERSION.SDK_INT < 18) {
method = stubObj.getClass().getMethod("sendMultipartText", String.class, String.class, List.class, List.class, List.class);
method.invoke(stubObj, toNum, centerNum, smsTextlist, sentIntentList, deliveryIntentList);
} else {
method = stubObj.getClass().getMethod("sendMultipartText", String.class, String.class, String.class, List.class, List.class, List.class);
===> method.invoke(stubObj, ctx.getPackageName(), toNum, centerNum, smsTextlist, sentIntentList, deliveryIntentList);
}
return true;
} catch (ClassNotFoundException e) {
Logger.Log(TAG, Logger.LogLevel.ERROR, "Error while sending multiple sms, stack trace: " + e.getStackTrace());
} catch (NoSuchMethodException e) {
Logger.Log(TAG, Logger.LogLevel.ERROR, "Error while sending multiple sms, stack trace: " + e.getStackTrace());
} catch (InvocationTargetException e) {
Logger.Log(TAG, Logger.LogLevel.ERROR, "Error while sending multiple sms, stack trace: " + e.getStackTrace());
} catch (IllegalAccessException e) {
Logger.Log(TAG, Logger.LogLevel.ERROR, "Error while sending multiple sms, stack trace: " + e.getStackTrace());
} catch (Exception e) {
Logger.Log(TAG, Logger.LogLevel.ERROR, "Error while sending multiple sms, stack trace: " + e.getStackTrace());
}
但是這個代碼是給下面的線異常開始與其他塊===>: 拋出:SecurityException:粘合劑調用不正確的接口
任何想法?
正確添加您的錯誤日誌。以及你的代碼。 不,我們不喜歡想象你的代碼通過。我們不是約翰列儂。 –
使用斷點和分步調試來驗證返回的服務是否屬於'com.android.internal.telephony.ISms $ Stub'類。 – Robert
有問題的更新的代碼。代碼對於simID == 0和name =「isms」正常工作。它在simID == 1和「isms_msim」的情況下發出異常。我希望實現雙SIM卡功能,這是API不支持的19級API(根據文檔)。 –