Mögliche Duplizieren:
How to block calls in androidWie man eingehenden Anruf programmatisch in Android zurückweist?
Kann jemand mir sagen, wie eingehende Anruf in android programmatisch zu verwerfen?
Mögliche Duplizieren:
How to block calls in androidWie man eingehenden Anruf programmatisch in Android zurückweist?
Kann jemand mir sagen, wie eingehende Anruf in android programmatisch zu verwerfen?
Lassen Sie uns diese Lösung in 3 Schritten realisieren:
ein. Definieren Sie diese Klasse oder Empfänger:
Das ist Ihre Hauptklasse:
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);
}
}
}
b. Manifest-Datei:
<?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. Definieren Telefon AIDL unter com.android.internal.telephony
package com.android.internal.telephony;
interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
mh: Arbeitete für mich nur in Emulator, nicht auf realen Geräten ... Alle Geräte über Android 2.3 benötigen Root-Berechtigung oder Installation als System-App in der Lage sein, die Berechtigung android.permission.MODIFY_PHONE_STATE
zu verwenden.
Gibt es eine Möglichkeit, Anrufe an Voicemail zu senden? – powder366
Ich kopiere und füge diese Dateien ein, aber es funktioniert nicht! Ich habe diese Erlaubnis gelöscht –
http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android – B00MER