Je suis confronté à un problème avec l'option de bloc d'appel Android. Je fais une application dans laquelle je veux fournir à l'utilisateur de bloquer l'appel indésirable. Je l'ai googlé mais trouver une solution qui ne fonctionne pas dans mon cas. Je veux ajouter que j'essaye ceci avec mon émulateur - service d'appel d'émulateur. Et le numéro d'un de mon émulateur est 15555215556 et un autre est 15555215554. Plese m'aider avec le code. Je poste ici l'erreur que j'ai rencontrée.Appelez le bloc dans android
02-22 23:44:05.769: E/BroadcastReceiver(377): BroadcastReceiver trying to return result during a non-ordered broadcast
02-22 23:44:05.769: E/BroadcastReceiver(377): java.lang.RuntimeException: BroadcastReceiver trying to return result during a non-ordered broadcast
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.content.BroadcastReceiver.checkSynchronousHint(BroadcastReceiver.java:451)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.content.BroadcastReceiver.setResultData(BroadcastReceiver.java:266)
02-22 23:44:05.769: E/BroadcastReceiver(377): at com.example.CallReceiver.onReceive(CallReceiver.java:33)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.app.ActivityThread.access$2400(ActivityThread.java:117)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.os.Looper.loop(Looper.java:123)
02-22 23:44:05.769: E/BroadcastReceiver(377): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-22 23:44:05.769: E/BroadcastReceiver(377): at java.lang.reflect.Method.invokeNative(Native Method)
02-22 23:44:05.769: E/BroadcastReceiver(377): at java.lang.reflect.Method.invoke(Method.java:507)
02-22 23:44:05.769: E/BroadcastReceiver(377): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-22 23:44:05.769: E/BroadcastReceiver(377): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-22 23:44:05.769: E/BroadcastReceiver(377): at dalvik.system.NativeStart.main(Native Method)
et voici mon code:
package com.example;
import java.lang.reflect.Method;
import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
public class CallReceiver extends BroadcastReceiver{
private String incomingnumber;
@Override
public void onReceive(Context context, Intent intent) {
String s[]={"15555215554","15555215556"};
Bundle b = intent.getExtras();
incomingnumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
//
try {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
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);
for (int i = 0; i < s.length; i++) {
if(s[i].equals(incomingnumber)){
// telephonyService.endCall();
Log.e("incoming:",incomingnumber);
}
}
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
Log.e("incoming:","hide");
}
}
}
interface itelephony:
package com.android.internal.telephony;
public interface ITelephony
{
boolean endCall();
void answerRingingCall();
}
J'ai fourni que l'on utilise l'autorisation et qui est: <uses-permission android:name="android.permission.READ_PHONE_STATE" />
Cela fonctionne. – Developer