Wie blockiere ich einen Handyruf und den Empfang von Nachrichten in der Entwicklung von Android-Anwendungen?
Lesezeit: 5 Minuten
prasad.gai
Ich möchte eine Anwendung zum Sperren einer Mobiltelefonnummer zum Empfangen oder Senden von Anrufen und Nachrichten implementieren. In meiner Bewerbung trage ich die Handynummer ein EditText Box, dann klicke ich auf eine Schaltfläche, um die vom Benutzer eingegebene Handynummer zu blockieren.
Ich habe eine Aktivitätsklasse wie folgt implementiert:
public class BlockNumberActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button)findViewById(R.id.block)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String mobileNumer = ((EditText)findViewById(R.id.mobileNum)).getText().toString();
//How to block entered mobileNumber
}
});
((Button)findViewById(R.id.unblock)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String mobileNumer = ((EditText)findViewById(R.id.mobileNum)).getText().toString();
//How to unblock entered mobileNumber
}
});
}
}
Ich denke, wir können verwenden BroadcastReceiver. Aber mehr Wissen habe ich da nicht. Bitte geben Sie mir eine Idee, wie ich die Sperrung oder Entsperrung der Handynummer implementieren kann. Bitte jeder Körper hilf mir…..
Versuchen Sie, dies zu sehen Blockieren Sie eingehende Nachrichten und blockieren Sie eingehende Anrufe
import java.lang.reflect.Method;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
import com.android.internal.telephony.ITelephony;
public class PhoneCallStateListener extends PhoneStateListener {
private Context context;
public PhoneCallStateListener(Context context){
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(context);
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
String block_number = prefs.getString("block_number", null);
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
//Turn ON the mute
audioManager.setStreamMute(AudioManager.STREAM_RING, true);
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Toast.makeText(context, "in"+block_number, Toast.LENGTH_LONG).show();
Class clazz = Class.forName(telephonyManager.getClass().getName());
Method method = clazz.getDeclaredMethod("getITelephony");
method.setAccessible(true);
ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);
//Checking incoming call number
System.out.println("Call "+block_number);
if (incomingNumber.equalsIgnoreCase("+91"+block_number)) {
//telephonyService.silenceRinger();//Security exception problem
telephonyService = (ITelephony) method.invoke(telephonyManager);
telephonyService.silenceRinger();
System.out.println(" in "+block_number);
telephonyService.endCall();
}
} catch (Exception e) {
Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
}
//Turn OFF the mute
audioManager.setStreamMute(AudioManager.STREAM_RING, false);
break;
case PhoneStateListener.LISTEN_CALL_STATE:
}
super.onCallStateChanged(state, incomingNumber);
}}
Jetzt in src erstellen Paketcom.android.internal.telephonyjetzt in diesem Paket Rechtsklick -> Neu -> Datei jetzt Namen geben ITelephony.aidl und fügen Sie diesen Code ein
HINWEIS: Code wurde in Android 2.2 (Froyo), 2.3 (GingerBread) getestet
Wie kann ich die PhoneCallStateListener-Klasse in meiner App ausführen. Ich meine, wie wird sie ausgeführt?
– prasad.gai
28. März 2012 um 09:51 Uhr
insyead this u can angeben this String block_number = “10 digit number”;
– Ronak Mehta
28. März 2012 um 10:28 Uhr
Ich erhalte keine eingehende Nummer bei if(incomingNumber.equalsIgnoreCase(“+91″+block_number))
– prasad.gai
28. März 2012 um 11:26 Uhr
was ? String block_number = “10-stellige Nummer” und jetzt können Sie meine obige Codierung verwenden
– Ronak Mehta
28. März 2012 um 11:29 Uhr
@Rstar Welche Berechtigungen sind dafür erforderlich? Und der Intent-Filter zur Verwendung mit dem BroadcastReceiver. Funktioniert das auch auf ICS und Jellybean?
Versuchen Sie, dies zu sehen Blockieren Sie eingehende Nachrichten und blockieren Sie eingehende Anrufe
– Praveenkumar
28. März 2012 um 10:28 Uhr