2017-02-08 1 views
1

Ich versuche Anrufblocker und unter Berechtigungen in Manifest hinzugefügt.Null eingehende Nummer in Marshmallow mit 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" /> 

für Empfänger ist mein Code:

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); 


     } 
    } 

-Code für den Vergleich Nummer:

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); 
     } 
} 

I null eingehende Nummer und Fehler m immer als:

java.lang.SecurityException: Neither user 10561 nor current process has android.permission.CALL_PHONE. 

Mobil zeigt nur eine Erlaubnis als Pho ne und das habe ich manuell gegeben. Warum dann Fehler und eingehende Nummer nicht bekommen? bitte Führer.

+0

Laufzeit Erlaubnis nehmen, wenn Sie Android SDK sind Targeting> = 23 – Aryan

+0

Dank, es funktionierte. – Panache

Antwort

0

Anfrage Berechtigungen zur Laufzeit

Wenn das Gerät mit Android 6.0 oder höher und Ziel SDK App ist 23 oder höher: Die App die Berechtigungen im Manifest zur Liste hat, und es muss jedes gefährlich anfordern Erlaubnis benötigt, während die App läuft. Der Benutzer kann jede Berechtigung gewähren oder verweigern, und die App kann auch dann mit eingeschränkten Funktionen ausgeführt werden, wenn der Benutzer eine Berechtigungsanforderung ablehnt.

https://developer.android.com/training/permissions/requesting.html

Verwandte Themen