3

我正在开发一个允许用户将数字添加到黑名单的 android。当来电号码与黑名单中的号码匹配时,即使电话短暂响铃然后断开呼叫,呼叫也应被拒绝。

我在 SO 上找到的所有内容都表示,如果不在我创建的 com.android.internal.telephony 中创建 AIDL 就无法完成,但我无法添加修改手机状态权限,因为它说它需要一个系统应用程序。

我的目标是 ICS 向上,我已经看到其他应用程序阻止 ICS 和向上的调用,所以这是如何完成的。我还尝试将修改手机状态权限添加到清单文件中,它显示一个错误,指出它仅适用于系统应用程序,所以我该如何解决这个问题。我不希望该应用程序必须植根。

感谢您的任何帮助,您可以提供

4

1 回答 1

4

我靠运气找到了答案。

而不是添加权限MODIFY_PHONE_STATE添加权限CALL_PHONE

创建一个名为com.android.internal.telephony

在这个包中创建一个名为ITelephony.aidl并添加以下内容的文件

包 com.android.internal.telephony;

interface ITelephony {      

    boolean endCall();     

    void answerRingingCall();      

    void silenceRinger(); 

}

使用以下代码来阻止呼叫

try
        {
            TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
            Class c = Class.forName(tm.getClass().getName());
            Method m = c.getDeclaredMethod("getITelephony");
            m.setAccessible(true);

            com.android.internal.telephony.ITelephony  telephonyService = (ITelephony)m.invoke(tm);
            //telephonyService.silenceRinger();
            telephonyService.endCall();
        }
        catch (Exception e)
        {
            Log.d("BLOCK CALL", e.toString());
            Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
        }

希望这对其他人有帮助,它不太容易找到。我不明白为什么谷歌删除了这样做的能力而不像这样搞砸。

于 2013-02-06T22:59:33.850 回答