拒绝来电

时间:2013-02-06 22:23:28

标签: android

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

我发现包括在SO上的一切,如果没有在我创建的com.android.internal.telephony中创建AIDL就无法完成,但我无法添加修改手机状态权限,因为它说它需要是一个系统应用程序。

我正在向上瞄准ICS,我看到其他应用程序在ICS中阻止了呼叫,所以这是怎么做到的。我还尝试将修改手机状态权限添加到清单文件中,并显示一条错误,说它仅适用于系统应用程序,因此如何解决此问题。我不希望应用程序必须扎根。

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:3)

我找到了一点运气的答案。

而不是添加权限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();
        }

希望这有助于其他人,它不容易找到。我不明白为什么谷歌删除了这样做的能力,但没有像这样捣乱。