在我的应用程序中,我想阻止特定的传入号码。我进行谷歌搜索,然后执行以下操作阻止来电 - Android。但这段代码对我不起作用。我正在测试安卓2.3.5
我这里没有活动课。 >> 第一类是扩展BroadcastReceiver。
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blocknumber"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
MainActivity.class
public class MainActivity extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String blockedNumbers[] = { "xxxxxxxxxx", "xxxxxxxxxx" };
Bundle b = intent.getExtras();
/*
* String incommingNumber = b
* .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
*/
String incommingNumber = b.getString("incoming_number");
Log.e("Incomming number========>", incommingNumber);
// String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
for (int i = 0; i < blockedNumbers.length; i++) {
Log.e("Incomming >>>>>>>>>>>>>========>", "" + i);
if (incommingNumber.equalsIgnoreCase(blockedNumbers[i])) {
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);
// telephonyService.silenceRinger();
telephonyService.endCall();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
IT电话
public interface ITelephony {
boolean endCall();
void answerRingingCall();
//void silenceRinger();
}
最后解决问题,
创建 IDL 接口以获取核心电话服务
包名必须是com.android.internal.电话
文件名 :ITelephony.aidl
// 首先我在这里创建ITelephony.java
对于创建.aidl file New > File
和写ITelephony.aidl
并按照步骤操作在 Android 中阻止呼叫而无需用户干预的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)