From f388fbdc00515373430d077e4b3843b29189f0a6 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 12 Mar 2012 10:51:26 -0700 Subject: [PATCH] Add new READ_EXTERNAL_STORAGE permission. Also adds some initial compatibility code for dealing with it. Change-Id: I104bff11798349e4aaa6da9b7be787b257daa1bb --- Command.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Command.cpp b/Command.cpp index c79e243..198fce4 100644 --- a/Command.cpp +++ b/Command.cpp @@ -636,6 +636,9 @@ int doDump(Bundle* bundle) bool hasWriteExternalStoragePermission = false; bool hasReadPhoneStatePermission = false; + // If an app requests write storage, they will also get read storage. + bool hasReadExternalStoragePermission = false; + // This next group of variables is used to implement a group of // backward-compatibility heuristics necessitated by the addition of // some new uses-feature constants in 2.1 and 2.2. In most cases, the @@ -999,6 +1002,8 @@ int doDump(Bundle* bundle) hasTelephonyPermission = true; } else if (name == "android.permission.WRITE_EXTERNAL_STORAGE") { hasWriteExternalStoragePermission = true; + } else if (name == "android.permission.READ_EXTERNAL_STORAGE") { + hasReadExternalStoragePermission = true; } else if (name == "android.permission.READ_PHONE_STATE") { hasReadPhoneStatePermission = true; } @@ -1163,12 +1168,19 @@ int doDump(Bundle* bundle) if (targetSdk < 4) { if (!hasWriteExternalStoragePermission) { printf("uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'\n"); + hasWriteExternalStoragePermission = true; } if (!hasReadPhoneStatePermission) { printf("uses-permission:'android.permission.READ_PHONE_STATE'\n"); } } + // If the application has requested WRITE_EXTERNAL_STORAGE, we will + // force them to always take READ_EXTERNAL_STORAGE as well. + if (!hasReadExternalStoragePermission && hasWriteExternalStoragePermission) { + printf("uses-permission:'android.permission.READ_EXTERNAL_STORAGE'\n"); + } + /* The following blocks handle printing "inferred" uses-features, based * on whether related features or permissions are used by the app. * Note that the various spec*Feature variables denote whether the -- 2.45.2