Я пытаюсь получить доступ к методу sendRawPdu в SMSDispatcher.
Я могу получить метод, но не могу вызвать его, потому что мне нужен экземпляр SMSDispatcher для вызова mSendRawPdu.invoke( /* ??? */ , pdus.encodedScAddress, pdus.encodedMessage, null, null );
Вызов метода из SmsManager прекрасно работает, потому что я могу получить объект, подобный этому SmsManager sm = SmsManager.getDefault();
, и передать его .invoke
try {
@SuppressWarnings("rawtypes")
Class c = Class.forName("com.android.internal.telephony.SMSDispatcher");
Method[] ms = c.getDeclaredMethods();
// List all methods
for (int i = 0; i < ms.length; i++) {
Log.d("ListMethos",ms[i].toString());
}
// Get method "sendRawPdu"
byte[] bb = new byte[1];
Method mSendRawPdu = c.getDeclaredMethod("sendRawPdu",bb.getClass(),bb.getClass(), PendingIntent.class, PendingIntent.class);
Log.d("success","success getting sendRawPdu");
mSendRawPdu.setAccessible(true);
// How to invoke the method not having object of type SMSDispatcher?
mSendRawPdu.invoke( /* ??? */ , pdus.encodedScAddress, pdus.encodedMessage, null, null );
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Есть ли у этой задачи возможное решение?