2017-02-05 4 views
0

nehmen ich Fehlerwie READ_PHONE_STATE Erlaubnis in Android 6.0

java.lang.SecurityException unten bekam: GetDeviceID: Weder Benutzer 10250 noch aktuellen Prozess hat android.permission.READ_PHONE_STATE.

Android Runtime: fatal EXCEPTION: main Prozess: com.infyco.kp.new_tab, PID: 23149 java.lang.RuntimeException: Kann nicht Aktivität ComponentInfo {com.infyco.kp.new_tab/com.infyco starten. kp.new_tab.splashscreen}: java.lang.SecurityException: getDeviceId: Weder Benutzer 10257 noch aktueller Prozess hat android.permission.READ_PHONE_STATE.

unten ist mein Code, ich weiß nicht, was

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1); 

falsch ist es funktioniert für SEND_SMS Erlaubnis wie unten, aber nicht für Sie permission mit gleichem Request Code anfordern oben

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, 1); 
+0

Haben Sie eine '' Element für 'READ_PHONE_STORAGE 'in deinem Manifest? – CommonsWare

+0

überprüfen Sie es https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous – Ajay

+0

@Commons ware ... ja, haben Sie es in manifest :) Ich möchte einen Code, Erlaubnis Laufzeit zu erhalten auch ich habe versucht mit unten isPermissionGranted() aber nicht funktioniert ... :( –

Antwort

0

Arbeits 1

versuchen Sie diesen Weg zur Anfrage Runtime permission

public boolean isPermissionGranted() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (checkSelfPermission(android.Manifest.permission.READ_PHONE_STATE) 
       == PackageManager.PERMISSION_GRANTED) { 
      Log.v("TAG","Permission is granted"); 
      return true; 
     } else { 

      Log.v("TAG","Permission is revoked"); 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 2); 
      return false; 
     } 
    } 
    else { //permission is automatically granted on sdk<23 upon installation 
     Log.v("TAG","Permission is granted"); 
     return true; 
    } 
} 


@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 

     case 2: { 

      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(getApplicationContext(), "Permission granted", Toast.LENGTH_SHORT).show(); 
       //do ur specific task after read phone state granted 
      } else { 
       Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_SHORT).show(); 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

Verwendung dieses als:

if(isPermissionGranted()){ 
//do ur specific task after read phone state 
} 

Auch in Ihrem Manifest add:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
    { 
     if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) 
       != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 
        PERMISSIONS_REQUEST_READ_PHONE_STATE); 
     } 
     else 
      { 
      mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
      if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { 
       return; 
      } 
      IMEI_Number_Holder= mTelephonyManager.getDeviceId(); 
      } 
    } 
    else 
    { 
     mTelephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 
     IMEI_Number_Holder = mTelephonyManager.getDeviceId(); 
    } 
+1

Erwägen Sie, einige Erklärung zu Ihrer Antwort hinzuzufügen. – Sam

Verwandte Themen