当为 Android 应用程序使用 proguard 时,反射方法不起作用
当我在 android 中使用反射来使用 proguard 来使用 telephonyservice apis 的应用程序时,我遇到了一个问题。
我定义了一个包 com.android.internal.telephony ,并在那里复制了 ITelephony.aidl 文件。
这是我使用反射的电话方法的代码片段。
Class<?> c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
com.android.internal.telephony.ITelephony telephonyService =
(com.android.internal.telephony.ITelephony) m.invoke(tm);
if(buttonInAction == acceptButton){
Log.v(TAG, "Answering the call");
telephonyService.answerRingingCall();
finish();
}
else{
Log.v(TAG, "Rejecting the call");
telephonyService.endCall();
finish();
}
现在没有 proguard 我可以使用这个 api,但是当我使用 proguard 进行编译时,它会给出 classcastException。我知道我需要在 proguard.cfg 文件中添加一些东西,我也尝试了一些东西,比如 -dontshrink -dontoptimize,但它仍然不起作用。
如果我缺少需要在该文件中添加的内容或此问题的任何其他解决方案,请告诉我。 谢谢 纳瓦布
I am facing a problem when i use proguard for application having used telephonyservice apis using reflection in android.
I have defined a package com.android.internal.telephony and there i have copied ITelephony.aidl file.
Here is the snippet of the code where i am using the methods of telephony using reflection.
Class<?> c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
com.android.internal.telephony.ITelephony telephonyService =
(com.android.internal.telephony.ITelephony) m.invoke(tm);
if(buttonInAction == acceptButton){
Log.v(TAG, "Answering the call");
telephonyService.answerRingingCall();
finish();
}
else{
Log.v(TAG, "Rejecting the call");
telephonyService.endCall();
finish();
}
Now without proguard i am able to use this apis, but when i use proguard for compliling, it gives classcastexception. I know i need to add something in proguard.cfg file and i also tried several things like -dontshrink -dontoptimize, but still it did not work.
Please let me know if i am missing something which needs to be added in that file or any other solution to this problem.
Thanks
Nawab
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这解决了问题:
This solves issue: