2012-10-19 1 views
11

Wenn Android 4.1 JellyBean (API 16) bei Google I bekannt gegeben wurde/O, es die folgende Erlaubnis eingeführt:Google Play zeigt die implizite READ_EXTERNAL_STORAGE Erlaubnis

READ_EXTERNAL_STORAGE

Lesezugriff auf externe Speicher geschützt Bietet . In Android 4.1 haben alle Anwendungen standardmäßig noch Lesezugriff. Dies wird in einer zukünftigen Version geändert, damit Anwendungen explizit Lesezugriff anfordern, der diese Berechtigung verwendet. Wenn Ihre Anwendung bereits einen Schreibzugriff anfordert, erhält sie automatisch Lesezugriff. Es gibt eine neue Entwickleroption, um die Einschränkung des Lesezugriffs zu aktivieren, damit Entwickler ihre Anwendungen testen können, wie Android sich in Zukunft verhält.

http://developer.android.com/about/versions/android-4.1.html#Permissions

Ich habe eine Anwendung, die API 16 und erfordert die WRITE_EXTERNAL_STORAGE Erlaubnis tagets. Ich bereite die Bereitstellung eines Updates vor und habe festgestellt, dass die Berechtigung READ_EXTERNAL_STORAGE jetzt als erforderliche Berechtigung im Entwicklerportal aufgeführt ist. Es wurde in Google Play nicht als erforderliche Berechtigung für ein Update aufgeführt, das letzte Woche implementiert wurde. Diese Anwendung fordert die Berechtigung READ_EXTERNAL_STORAGE nicht explizit an.

Werden Benutzer, die die Berechtigung WRITE_EXTERNAL_STORAGE für diese Anwendung bereits erteilt haben, aufgefordert, die zusätzliche, implizite Berechtigung READ_EXTERNAL_STORAGE bei der Aktualisierung der Anwendung zu erteilen?

Update:

Wir haben seit der App veröffentlicht und JellyBean Geräte werden automatisch aktualisiert, ohne dass die READ_EXTERNAL_STORAGE eine Erlaubnis eingeholt. Wird in einer zukünftigen Version, wenn ich explizit die Anforderung für READ_EXTERNAL_STORAGE deklariere, Benutzer, die die Berechtigung WRITE_EXTERNAL_STORAGE bereits erteilt haben, aufgefordert, die Berechtigung READ_EXTERNAL_STORAGE zu erteilen?

Antwort

2

Sie müssen READ_EXTERNAL_STORAGE nicht explizit deklarieren, solange Sie WRITE_EXTERNAL_STORAGE haben. Bisher hat das Betriebssystem den Lesezugriff auf den externen Speicher nicht erzwungen, der sich ändert, und Sie müssen ihn jetzt anfordern. Aber wenn Sie Schreibzugriff haben, erhalten Sie implizit Lesezugriff.

Von http://developer.android.com/training/basics/data-storage/files.html

Wenn Ihre Anwendung den externen Speicher lesen muss (aber nicht darauf schreiben), dann müssen Sie die READ_EXTERNAL_STORAGE Erlaubnis ...

jedoch erklären, wenn Ihr app verwendet die Berechtigung WRITE_EXTERNAL_STORAGE und dann hat es implizit auch die Berechtigung, den externen Speicher zu lesen.

3

Seit API 19 (Android 4.4) müssen Sie explizit READ_EXTERNAL_STORAGE Erlaubnis angeben. Ja, wenn Sie die Berechtigung WRITE_EXTERNAL_STORAGE haben, wird Ihnen implizit die Berechtigung READ_EXTERNAL_STORAGE erteilt. Wenn Sie jedoch einen schreibgeschützten Zugriff auf externen Speicher benötigen, müssen Sie READ_EXTERNAL_STORAGE angeben.

Prooflink: http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE

+1

Hinweis: Es scheint immer noch Auto-Add READ_EXTERNAL_STORAGE wenn Sie WRITE_EXTERNAL_STORAGE in Ihrem Manifest angegeben haben, aber mit einem maxSdkVersion = 18 zugegeben.Dies bedeutet, dass Google Play bei App-Upgrades, bei denen Sie Ihre Felder für die "Nutzungserlaubnis" nicht berührt haben, immer noch beschweren, dass sich dies geändert hat. Die Lösung, um Google Play nicht zu beschweren, besteht darin, READ_EXTERNAL_STORAGE explizit festzulegen. –