如何使用 'Java Reflection' 获取所选 SIM 卡的 SmsManager 对象?
How to get SmsManager object of selected SIM card using 'Java Reflection'?
我正在使用反射方法获取 SIM 卡的 smsManager 对象。
通过使用"getDefault"方法,默认 SIM 的默认 smsManager 对象工作得很好,
getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]);
但我想从 selected SIM 卡 发送消息(在我的应用程序中为 select SIM 卡提供了选项)。
我知道,SmsManager class 中有一个方法可以使用 SIM subscriptionID 'getSmsManagerForSubscriptionId(int subscriptionID)' 获取 selected SIM 卡的 smsManager 对象添加到 API 级别 22(棒棒糖)。
使用下面的代码可以完美运行,
SmsManager.getSmsManagerForSubscriptionId(订阅ID);
但是我想通过反射的方式来使用。所以,当我通过反射使用这个方法时,
getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getSmsManagerForSubscriptionId", Integer.class).invoke(null, subID);
它抛出异常: 'java.lang.NoSuchMethodException: getSmsManagerForSubscriptionId [class java.lang.Integer]'
谁能告诉我哪里做错了?
谢谢。
整数不是整数。
int.class 而不是 Integer.class
我正在使用反射方法获取 SIM 卡的 smsManager 对象。
通过使用"getDefault"方法,默认 SIM 的默认 smsManager 对象工作得很好,
getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]);
但我想从 selected SIM 卡 发送消息(在我的应用程序中为 select SIM 卡提供了选项)。
我知道,SmsManager class 中有一个方法可以使用 SIM subscriptionID 'getSmsManagerForSubscriptionId(int subscriptionID)' 获取 selected SIM 卡的 smsManager 对象添加到 API 级别 22(棒棒糖)。
使用下面的代码可以完美运行,
SmsManager.getSmsManagerForSubscriptionId(订阅ID);
但是我想通过反射的方式来使用。所以,当我通过反射使用这个方法时,
getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getSmsManagerForSubscriptionId", Integer.class).invoke(null, subID);
它抛出异常: 'java.lang.NoSuchMethodException: getSmsManagerForSubscriptionId [class java.lang.Integer]'
谁能告诉我哪里做错了?
谢谢。
整数不是整数。
int.class 而不是 Integer.class