Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 向双SIM卡发送短信_Android_Sms_Smsmanager - Fatal编程技术网

Android 向双SIM卡发送短信

Android 向双SIM卡发送短信,android,sms,smsmanager,Android,Sms,Smsmanager,我有一个脚本SMS android。此脚本工作正常,但我的双SIM卡手机有问题 我的脚本已成功发送消息到SIM卡1。但不是在SIM卡2上。有人能修改我下面的脚本吗 try { System.out.println("MODEL:"+Build.MODEL); if (simID == 0) { name = Build.MODEL.equals("Philips T939") ? "isms0" : &q

我有一个脚本SMS android。此脚本工作正常,但我的双SIM卡手机有问题

我的脚本已成功发送消息到SIM卡1。但不是在SIM卡2上。有人能修改我下面的脚本吗

try {
    System.out.println("MODEL:"+Build.MODEL);
    if (simID == 0) {
        name = Build.MODEL.equals("Philips T939") ? "isms0" : "isms"; //
        // for model : "Philips T939" name = "isms0"
    }
    else if (simID == 1) {
        name = "isms2";
    }
    else {
        throw new Exception("can not get service which for sim '" + simID + "', only 0,1 accepted as values");
    }
    
    Method declaredMethod = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", new Class[]{String.class});
    declaredMethod.setAccessible(true);
    Object invoke = declaredMethod.invoke(null, new Object[]{name});
    
    declaredMethod = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", new Class[]{IBinder.class});
    declaredMethod.setAccessible(true);
    
    invoke = declaredMethod.invoke(null, new Object[]{invoke});
    Log.e("SimUtil", "send msg - " + smsText);
    
    if (Build.VERSION.SDK_INT < 18) {
        invoke.getClass().getMethod("sendText", new Class[]{String.class, String.class, String.class, PendingIntent.class, PendingIntent.class})
        .invoke(invoke, new Object[]{toNum, centerNum, smsText, sentIntent, deliveryIntent});
    } else if (Build.VERSION.SDK_INT > 18) {
        ArrayList arrayList = new ArrayList();
        
        for (SubscriptionInfo subscriptionId : SubscriptionManager.from(ctx).getActiveSubscriptionInfoList()) {
            int subscriptionId2 = subscriptionId.getSubscriptionId();
            arrayList.add(Integer.valueOf(subscriptionId2));
            Log.e("SimUtil", "SmsManager - subscriptionId: " + subscriptionId2);
        }
        smsManager.getSmsManagerForSubscriptionId(((Integer) arrayList.get(simID)).intValue()).sendTextMessage(toNum, null, smsText, sentIntent, deliveryIntent);
    } else {
        SmsManager.getDefault().sendTextMessage(toNum, null, smsText, sentIntent, deliveryIntent);
    }
    return true;
} catch (ClassNotFoundException e) {
    Log.e("apipas", "ClassNotFoundException:" + e.getMessage());
    e.printStackTrace();
    Log.e("SimUtil", "error 1");
    return false;
} catch (NoSuchMethodException e) {
    Log.e("apipas", "NoSuchMethodException:" + e.getMessage());
    Log.e("SimUtil", "error 2");
    e.printStackTrace();
    return false;
} catch (InvocationTargetException e) {
    Log.e("apipas", "InvocationTargetException:" + e.getMessage());
    Log.e("SimUtil", "error 3");
    e.printStackTrace();
    return false;
} catch (IllegalAccessException e) {
    Log.e("apipas", "IllegalAccessException:" + e.getMessage());
    Log.e("SimUtil", "error 4");
    e.printStackTrace();
    return false;
} catch (Exception e) {
    Log.e("apipas", "Exception:" + e.getMessage());
    Log.e("SimUtil", "error 5");
    e.printStackTrace();
}
return false;
试试看{
System.out.println(“MODEL:+Build.MODEL”);
if(simID==0){
名称=Build.MODEL.equals(“飞利浦T939”)?“isms0”:“isms”//
//适用于型号:“飞利浦T939”name=“isms0”
}
else if(simID==1){
name=“isms2”;
}
否则{
抛出新异常(“无法获取sim'+simID+'的服务,仅接受0,1作为值”);
}
方法declaredMethod=Class.forName(“android.os.ServiceManager”).getDeclaredMethod(“getService”,新类[]{String.Class});
declaredMethod.setAccessible(true);
objectinvoke=declaredMethod.invoke(null,新对象[]{name});
declaredMethod=Class.forName(“com.android.internal.telephony.ISms$Stub”).getDeclaredMethod(“asInterface”,新类[]{IBinder.Class});
declaredMethod.setAccessible(true);
invoke=declaredMethod.invoke(null,新对象[]{invoke});
Log.e(“SimUtil”、“发送消息-”+smsText);
如果(Build.VERSION.SDK_INT<18){
invoke.getClass().getMethod(“sendText”,新类[]{String.Class,String.Class,String.Class,PendingIntent.Class,PendingIntent.Class})
.invoke(invoke,新对象[]{toNum,centerNum,smsText,sentinent,deliveryIntent});
}else if(Build.VERSION.SDK_INT>18){
ArrayList ArrayList=新的ArrayList();
for(SubscriptionInfo subscriptionId:SubscriptionManager.from(ctx.getActiveSubscriptionInfo()){
int subscriptionId2=subscriptionId.getSubscriptionId();
add(Integer.valueOf(subscriptionId2));
Log.e(“SimUtil”,“smsmsmanager-subscriptionId:”+subscriptionId2);
}
smsManager.getSmsManagerForSubscriptionId(((整数)arrayList.get(simID)).intValue()).sendTextMessage(toNum,null,smsText,sentinent,deliveryIntent);
}否则{
SmsManager.getDefault().sendTextMessage(toNum、null、smsText、sentinent、deliveryIntent);
}
返回true;
}catch(classnotfounde异常){
Log.e(“apipas”,“ClassNotFoundException:+e.getMessage());
e、 printStackTrace();
Log.e(“SimUtil”,“错误1”);
返回false;
}捕获(无此方法例外){
Log.e(“apipas”,“NoSuchMethodException:+e.getMessage());
Log.e(“SimUtil”,“错误2”);
e、 printStackTrace();
返回false;
}捕获(调用TargetException e){
Log.e(“apipas”,“InvocationTargetException:”+e.getMessage());
Log.e(“SimUtil”,“错误3”);
e、 printStackTrace();
返回false;
}捕获(非法访问例外e){
Log.e(“apipas”,“IllegalAccessException:+e.getMessage());
Log.e(“SimUtil”,“错误4”);
e、 printStackTrace();
返回false;
}捕获(例外e){
Log.e(“apipas”,“Exception:+e.getMessage());
Log.e(“SimUtil”,“错误5”);
e、 printStackTrace();
}
返回false;
以下是控制台中的异常: