6
A
回答
15
让我们在3个步骤实现此解决方案:
一个。这个类定义或接收器:
这是你的主类:
package com.sample;
import java.lang.reflect.Method;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
import com.android.internal.telephony.*;
public class main extends BroadcastReceiver {
private static final String TAG = null;
String incommingNumber;
String incno1= "9916090941";
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(null == bundle)
return;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
try {
// Java reflection to gain access to TelephonyManager's
// ITelephony getter
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Log.v(TAG, "Get getTeleService...");
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);
Bundle b = intent.getExtras();
incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.v(TAG,incommingNumber);
Log.v(TAG,incno1);
if (incommingNumber.equals(incno1))
{
telephonyService = (ITelephony) m.invoke(tm);
telephonyService.silenceRinger();
telephonyService.endCall();
Log.v(TAG,"BYE BYE BYE");
}
else{
telephonyService.answerRingingCall();
Log.v(TAG,"HELLO HELLO HELLO");
}
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG,
"FATAL ERROR: could not connect to telephony subsystem");
Log.e(TAG, "Exception object: " + e);
}
}
}
湾清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".main">
<intent-filter android:priority="100" >
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
c。定义电话AIDL,下com.android.internal.telephony
package com.android.internal.telephony;
interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
MH:只能在模拟器为我工作,而不是在真实设备...的Android 2.3以上的所有设备都需要root权限或安装作为一个系统应用能够使用权限android.permission.MODIFY_PHONE_STATE
。
+0
有没有办法将呼叫发送到语音邮件? – powder366 2014-02-26 18:06:55
+1
我复制并粘贴这些文件,但它不起作用! 我删除了此权限 – 2014-09-09 07:42:04
相关问题
- 1. 如何在android中以编程方式拒绝呼叫
- 2. 以无编程方式拒绝呼叫没有响铃
- 3. 如何以编程方式在Android中标记呼叫URGENT
- 4. 以编程方式拒绝权限 - Android
- 5. android.provider.CallLog.Calls.TYPE传出呼叫未应答,传出呼叫被拒绝?
- 6. C#Outlook - 呼叫被拒绝的呼叫
- 7. IOS语音呼叫拒绝
- 8. SipAudioCall.endCall不拒绝呼叫
- 9. 以编程方式断开Android Marshmallow版本中的呼叫
- 10. Android:在设备上以编程方式模拟/模拟呼叫
- 11. 如何在Android中以编程方式将呼叫转接到语音邮件
- 12. 如何以编程方式在android中阻止所有传入呼叫和短信
- 13. 如何在Android L中以编程方式打开传入呼叫的扬声器?
- 14. IOS以编程方式拒绝来电?
- 15. Yammer以编程方式拒绝请求
- 16. 以编程方式阻止黑莓上的传出呼叫
- 17. 如何以编程方式拒绝编辑页眉和页脚?
- 18. 如何以编程方式获取Android和Java中的传入呼叫的移动网络代码我
- 19. 在iOS7中以编程方式断开呼叫
- 20. 以编程方式,在iphone中呼叫转移
- 21. 如何通过编程方式拒绝通话android
- 22. 如何使用Lync Client API 2010拒绝传入的视频呼叫?
- 23. 如何在android中查找可以处理传入呼叫的应用程序?
- 24. 呼叫被被叫方拒绝。 (从HRESULT异常:0x80010001(RPC_E_CALL_REJECTED))
- 25. 如何在iOS中以编程方式取消或阻止传入呼叫?可能吗?
- 26. 以编程方式在Python中拒绝/ nohup
- 27. 在VOIP呼叫期间以编程方式启用扬声器
- 28. 导出到Excel呼叫被拒绝
- 29. 呼叫被callee拒绝PowerPoint自动
- 30. Windows程序以编程方式捕获电话呼叫数据?
http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android – B00MER 2010-09-28 04:22:30