当为 Android 应用程序使用 proguard 时,反射方法不起作用

发布于 2024-12-11 21:17:35 字数 935 浏览 0 评论 0原文

当我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Oo萌小芽oO 2024-12-18 21:17:35

这解决了问题:

-keep class com.android.internal.telephony.ITelephony { *; }

This solves issue:

-keep class com.android.internal.telephony.ITelephony { *; }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文