2016-05-20 36 views
0

我使用反射方法获取SIM卡的smsManager对象如何使用'Java Reflection'获取所选SIM卡的SmsManager对象?

它可以正常使用,通过使用“getDefault”的方法来获得默认SIM的默认smsManager对象,

getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]); 

但我想从选定的SIM卡(给选择SIM卡选项发送消息在我的应用程序中)。

我知道,存在SmsManager类中的方法来获得使用SIM subscriptionID 'getSmsManagerForSubscriptionId(INT subscriptionID)'在API级22(棒棒糖)加入选择的SIM卡的smsManager对象。

它完美使用以下代码,

SmsManager.getSmsManagerForSubscriptionId(subscriptionID);

但我想用反射法。所以,当我使用反射这种方法,

getContext().getClassLoader().loadClass("android.telephony.SmsManager").getMethod("getSmsManagerForSubscriptionId", Integer.class).invoke(null, subID); 

它抛出异常:'java.lang.NoSuchMethodException:getSmsManagerForSubscriptionId [类java.lang.Integer]'

谁能告诉我我在哪里做错了?

谢谢。

+0

*谁能告诉我哪里做错了*您正在使用的不存在 – Selvin

+0

方法我想用这个方法的https://开发商。 android.com/reference/android/telephony/SmsManager.html#getSmsManagerForSubscriptionId%28int%29 –

+0

然后使用它...为什么你需要反思?如果设备上不存在方法反射不会自动产生它 – Selvin

回答

0

整数不是整数。

int.class代替Integer.class

+0

谢谢耶稣让我正确。现在它正在工作。 –

+0

欢迎:) – JesusS

相关问题