2

我想制作一个应用程序,一旦应用程序启动,它将显示两个按钮(启动和停止按钮),一旦用户单击启动按钮,调用功能将被阻止一段时间,直到用户再次启动应用程序和单击停止按钮可停止此功能。任何帮助请其紧急

简而言之,我会告诉我想通过仅使用此活动来阻止来自我的手机的拨出电话

请问有什么办法吗???

4

2 回答 2

9

您可以使用广播接收器的 onReceive 方法中的 setResultData(null) 函数阻止呼出呼叫。

public class BlockOutgoing extends BroadcastReceiver
{
    String number;
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Log.d("12280", "asdasNumber is-->> " + number);
        number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        setResultData(null);
        Toast.makeText(context, "Outgoing Call Blocked" , 5000).show();

    }
}

在清单文件中,您需要像这样注册接收器,

<receiver
            android:name=".BlockOutgoing"
            android:label="@string/app_name" >
            <intent-filter android:priority="1">

<action android:name="android.intent.action.NEW_OUTGOING_CALL" />

            </intent-filter>
        </receiver>

还要定义拦截呼出的权限,

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

编辑 - 要取消注册广播接收器,请点击此链接

于 2012-11-10T07:16:14.743 回答
0

公共类 BlockOutgoing 扩展 BroadcastReceiver {

String number;
@SuppressLint("WrongConstant")
@Override
public void onReceive(Context context, Intent intent)
{
    // Log.d("12280", "asdasNumber is-->> " + number);
    number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
    setResultData(null);
    Toast.makeText(context, "Outgoing Call Blocked" , 5000).show();

}

}

   <receiver
        android:name=".BlockOutgoing"
        android:label="@string/app_name" >
        <intent-filter android:priority="1">
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />

        </intent-filter>
    </receiver>
于 2018-05-30T03:45:53.373 回答