Я пытаюсь выполнить блокировку вызовов и добавлен под разрешением в манифесте.Null входящий номер в Marshmallow с помощью PhoneStateListener
<uses-permission-sdk-23 android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Мой код для приемника:
public class PhoneCallStateListener extends PhoneStateListener {
public class PhoneCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPreferences = context.getSharedPreferences("CallBlockingPreference", Context.MODE_PRIVATE);
boolean blockCalls=sharedPreferences.getBoolean("blockCall", false);
Toast.makeText(context, "Call block enabled", Toast.LENGTH_SHORT).show();
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
PhoneCallStateListener customPhoneListener = new PhoneCallStateListener(context);
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
Код для сравнения номер:
public PhoneCallStateListener(Context context) {
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
preferences = context.getSharedPreferences(MYPREFS, Context.MODE_PRIVATE);
setdefault.add("");
editor = preferences.edit();
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
ArrayList<String> allBlockedNuber = new ArrayList<>();
reterievePref = preferences.getStringSet("listOfBlockedNumbers", setdefault);
allBlockedNuber.addAll(reterievePref);
System.out.println(allBlockedNuber.size());
System.out.println(incomingNumber);
}
}
Я получаю нулевой входящий номер и сообщение об ошибке, как:
java.lang.SecurityException: Neither user 10561 nor current process has android.permission.CALL_PHONE.
Mobile показывает только одно разрешение как Pho ne и что я дал вручную. Тогда почему ошибка и не получение входящего номера? PLS руководство.
взять разрешение запуска время, если вы ориентируетесь Android SDK> = 23 – Aryan
Спасибо, это сработало. – Panache