2015-06-21 20 views
4

授予在我的應用程序中的帳戶權限組的所有權限,我需要創建一個帳戶以下權限:不能自動

<uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> 
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/> 
<uses-permission android:name="android.permission.USE_CREDENTIALS"/> 

這是我的理解是,在男,這些應該被自動授予。

但是,我所看到的是隻有GET_ACCOUNTS被授予。我檢查這個用下面的代碼:

@Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    logPermissionStatus(Manifest.permission.GET_ACCOUNTS); 
    logPermissionStatus(Manifest.permission.MANAGE_ACCOUNTS); 
    logPermissionStatus(Manifest.permission.AUTHENTICATE_ACCOUNTS); 
    logPermissionStatus(Manifest.permission.USE_CREDENTIALS); 
} 

private void logPermissionStatus(String permission) { 
    if (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) { 
    Log.d("AccountPermissions", "Granted: " + permission); 
    } else { 
    Log.d("AccountPermissions", "Denied: " + permission); 
    } 
} 

它打印:

D/AccountPermissions﹕ Granted: android.permission.GET_ACCOUNTS 
D/AccountPermissions﹕ Denied: android.permission.MANAGE_ACCOUNTS 
D/AccountPermissions﹕ Denied: android.permission.AUTHENTICATE_ACCOUNTS 
D/AccountPermissions﹕ Denied: android.permission.USE_CREDENTIALS 

如果我嘗試請求權限

requestPermissions(new String[] { 
    Manifest.permission.GET_ACCOUNTS, 
    Manifest.permission.MANAGE_ACCOUNTS, 
    Manifest.permission.AUTHENTICATE_ACCOUNTS, 
    Manifest.permission.USE_CREDENTIALS, 
}, 1); 

對話框說「允許AccountPermissions執行未知的行動?「,導致我相信這些並不打算要求用戶。此外,ACCOUNT權限組在應用信息頁面的舊版權限下顯示。

我需要做些事情來讓Android自動授予我這些權限,還是我真的應該從用戶請求它們?

+1

我認爲有做了很多清理工作版本的Android M船舶之間現在,當涉及到新的許可制度,也有很多是在這同一條船上的權限。我不會太擔心,並且在未來的跨國公司預告中再次嘗試是否以及何時發佈。 – CommonsWare

+1

@CommonsWare我認爲可能是這樣,但我希望我錯過了一些東西。如果這個功能更完整,會很好,因爲它可以說是最需要對應用程序進行更改的東西。 – SimonVT

+1

我認爲在這種情況下最好的做法是打開一個錯誤報告 – greywolf82

回答

0

這已在最新的M預覽中修復。