gpt4 book ai didi

android - Android 中的来电拦截

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:35 24 4
gpt4 key购买 nike

我能够在 android 中阻止来电,但问题是它会在断开时间之前响铃几分之一秒。如何在不响铃的情况下直接挂断电话?

我在 Manifest 文件中添加了权限:

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-feature android:name="android.hardware.telephony" />

然后创建IDL接口(interface)获取核心电话服务。

 package com.android.internal.telephony;
interface ITelephony {

boolean endCall();

void answerRingingCall();

void silenceRinger();
}

然后为来电制作广播接收器。

public class PhonecallReceiver extends BroadcastReceiver {

Context context = null;

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

Log.i(TAG, "Receving call...");
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
try {

Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(telephony);

Bundle b = intent.getExtras();
String incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

telephonyService.endCall();

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

最佳答案

暂时是不可能的任务。在这里查看原因:Why it is impossible to intercept incoming calls on Android

但我建议你还是我自己采用的临时解决方案:

在拦截来电之前,首先需要做的是获取当前手机铃声的模式,然后开启静音:

AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audiomanage.getRingerMode();
audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT);

在阻止调用(或不阻止调用)后为您提供初始模式:

audiomanage.setRingerMode(ringerMode);

您需要这些权限:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

希望对你有所帮助。

关于android - Android 中的来电拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com