2016-05-20 8 views
0

Ich verwende Reflektionsmethode für get smsManager Objekt der SIM-Karte.Wie bekomme ich das SmsManager-Objekt der ausgewählten SIM-Karte mit 'Java Reflection'?

Es funktioniert perfekt Standard smsManager Objekt von Standard SIM unter Verwendung von „getDefault“ Methode zu bekommen,

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

Aber ich Nachrichten von ausgewählten SIM-Karte (Option SIM-Karte gegeben senden möchten auszuwählen in meiner Bewerbung).

ich weiß, gibt es ein Verfahren, in SmsManager Klasse smsManager Objekt der ausgewählten SIM-Karte SIM subscriptionId 'getSmsManagerForSubscriptionId (int subscriptionId)' hinzugefügt in API-Ebene 22 (Lollipop) zu erhalten.

Es funktioniert perfekt unter Code,

SmsManager.getSmsManagerForSubscriptionId (subscriptionId);

Aber ich möchte nach Reflexion Methode verwenden. Also, wenn ich durch die Reflexion dieser Methode bin mit,

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

Es Ausnahme auslöst: 'java.lang.NoSuchMethodException: getSmsManagerForSubscriptionId [Klasse java.lang.Integer]

Kann mir jemand sagen, wo ich falsch mache?

Danke.

+0

* Kann mir jemand sagen, wo ich falsch mache * Sie verwenden Methode, die nicht – Selvin

+0

existiert ich diese Methode https verwenden möchten: // Entwickler. android.com/reference/android/telephony/SmsManager.html#getSmsManagerForSubscriptionId%28int%29 –

+0

dann verwenden Sie es ... warum brauchen Sie Reflexion? Wenn es keine Methode auf dem Gerät gibt, wird die Reflektion nicht automatisch generiert. – Selvin

Antwort

0

Ganzzahl ist nicht int.

int.class statt Integer.class

+0

Danke JesusS, um mich richtig zu machen. Jetzt geht es. –

+0

sind herzlich willkommen :) – JesusS