【问题标题】:How to Reject a call programatically in android如何在android中以编程方式拒绝呼叫
【发布时间】:2011-09-08 12:17:19
【问题描述】:

在我的应用程序中,我将维护一个联系人列表。

来自列表中联系人的任何呼叫都将被挂断。它们将显示在未接来电下方,但电话不会响铃。

【问题讨论】:

标签: android telephony callblocking


【解决方案1】:

首先创建这个接口:

  public interface ITelephony {

        boolean endCall();

        void answerRingingCall();

        void silenceRinger();

  }

然后创建这个扩展广播接收器的类

public class IncomingCallReceiver extends BroadcastReceiver {
    private ITelephony telephonyService;
    private String blacklistednumber = "+458664455";

    @Override
    public void onReceive(Context context, Intent intent) {

       TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
       try {
         Class c = Class.forName(tm.getClass().getName());
         Method m = c.getDeclaredMethod("getITelephony");
         m.setAccessible(true);
         ITelephony telephonyService = (ITelephony) m.invoke(tm);
         Bundle bundle = intent.getExtras();
         String phoneNumber = bundle.getString("incoming_number");
         Log.e("INCOMING", phoneNumber);
         if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) { 
            telephonyService.silenceRinger();
            telephonyService.endCall();
            Log.e("HANG UP", phoneNumber);
         }

       } catch (Exception e) {
         e.printStackTrace();
       }
}

这只会阻止那个电话号码,但你明白了。

在您的清单中添加以下内容:

<receiver android:name=".IncomingCallReceiver">
    <intent-filter android:priority="999">
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />

【讨论】:

  • 嗨,我做到了。但什么也没发生。如何创建该界面我的意思是普通界面或aidl文件
  • 只创建一个普通的intercafe。但是你可能需要把它放在一个名为:com.android.internal.telephony 的包中试试看。
  • 即使它不工作我认为我们必须生成aidl文件。但不知道该怎么做。
  • 如何添加“android.permission.MODIFY_PHONE_STATE”权限?
  • @insomniac 请使用这个
【解决方案2】:

here下载ITelephony类。

然后放到com.android.internal.telephony.的一个包中(新建一个包) 然后将包导入到适当的类中,并使用endCall() 方法拒绝呼叫

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多