0

我檢查我的應用程序的反對新的權限模型的權限在Android 6.0檢查新的權限模型

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

靶向上API23的應用程序,使用Appcompatv7-R23,通過ADB在模擬器設備的Android安裝簽署應用6.0並在運行時運行: 沒有新的事情發生,該應用程序與API 23之前一樣運行良好,並且似乎所有這些權限都是在安裝時自動授予的。

我爲RECORD_AUDIO權限插入了ContextCompat.checkSelfPermission(),它很快返回「PERMISSION_GRANTED」。

這三個權限是否有可能被新的權限模式保留爲不危險? 我的測試是否有效?

+0

「針對API23上的應用」 - 你的意思是說你的'targetSdkVersion'設置爲23? – CommonsWare

+0

yes,android:targetSdkVersion =「23」。並在API23上建立項目目標。 – GPack

+1

Gpack,不可用於存儲權限,轉至設置 - >應用程序 - >查看您的應用程序擁有的所有權限 – dex

回答

0

我的測試是無效的,因爲模擬器沒有在API23平臺上運行,儘管我已經選擇了API23在設備的定義。

+1

這怎麼可能是一個被接受的解決方案? –

0

它仍然是危險的類別,並在安裝這些應用程序不批,瞄準版本的Android M

+0

您是否嘗試使用Appcompatv7-r23模擬器? – GPack

+0

不,我沒有嘗試過模擬器:( – dex

0

您需要進行一個M設備上運行,看的行爲。較舊的SDK電話將授予安裝權限。這些權限需要實施新模型,否則您的應用將在安裝新設備後崩潰。

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

Android M Permissions

你需要檢查每個權限在需要的時候,然後如果權限授予有一個回調方法來實現功能。

if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (shouldShowRequestPermissionRationale(
      Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     // Explain to the user why we need to read the write to storage 
    } 

    requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
      MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE); 

    // MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE is an 
    // app-defined int constant 

    return; 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
    String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_WRITE_EXTERNAL_STORAGE: { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! do the 
       // calendar task you need to do. 

      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
      } 
      return; 
     } 

    // other 'switch' lines to check for other 
    // permissions this app might request 
    } 
} 
+0

是的,我知道它的問題是,Android 6.0 API23比M預覽更新 – GPack

+0

嘗試通過應用信息權限部分關閉權限,看看會發生什麼。 –