diff options
author | Vivek Sekhar <vsekhar@codeaurora.org> | 2015-11-21 21:26:33 -0800 |
---|---|---|
committer | jrizzoli <joey@cyanogenmoditalia.it> | 2015-12-03 19:57:02 +0100 |
commit | a3d93b1aa56fdd91c3ff98e12aa0b55a174f3e3b (patch) | |
tree | fb3814910c7e5b3c068bae04a8a0ed677d614e02 /src/com/android | |
parent | fb9c05fe2f0412680ec276947786785b1a9de37d (diff) | |
download | android_packages_apps_Gello-a3d93b1aa56fdd91c3ff98e12aa0b55a174f3e3b.tar.gz android_packages_apps_Gello-a3d93b1aa56fdd91c3ff98e12aa0b55a174f3e3b.tar.bz2 android_packages_apps_Gello-a3d93b1aa56fdd91c3ff98e12aa0b55a174f3e3b.zip |
Support dangerous permission for Android M
Change-Id: I4e2b7dbc229afa52e9693630f95b9f4954f2def0
Conflicts:
AndroidManifest.xml.jinja2
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/browser/BrowserActivity.java | 12 | ||||
-rw-r--r-- | src/com/android/browser/DownloadSettings.java | 48 |
2 files changed, 54 insertions, 6 deletions
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index 70320293..f6b25f55 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -169,6 +169,18 @@ public class BrowserActivity extends Activity { } @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + if (getController().getCurrentWebView() != null) { + if (getController().getCurrentWebView().onRequestPermissionsResult( + requestCode, permissions, grantResults)) { + return; + } + } + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override protected void onNewIntent(Intent intent) { if (shouldIgnoreIntents()) return; EngineInitializer.onNewIntent(BrowserActivity.this, intent); diff --git a/src/com/android/browser/DownloadSettings.java b/src/com/android/browser/DownloadSettings.java index 32803de4..05e7fe62 100644 --- a/src/com/android/browser/DownloadSettings.java +++ b/src/com/android/browser/DownloadSettings.java @@ -52,6 +52,8 @@ import android.view.Window; import android.widget.Toast; import android.webkit.MimeTypeMap; import android.text.TextUtils; +import android.content.pm.PackageManager; +import android.Manifest.permission; import com.android.browser.reflect.ReflectHelper; @@ -86,6 +88,8 @@ public class DownloadSettings extends Activity { private static final String APK_TYPE="apk"; private static final String OCTET_STREAM = "application/octet-stream"; + private int nextRequestCode = 2000; + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // initial the DownloadSettings view @@ -242,15 +246,44 @@ public class DownloadSettings extends Activity { return; } - // staring downloading - DownloadHandler.startingDownload(DownloadSettings.this, - url, userAgent, contentDisposition, - mimetype, referer, authorization, privateBrowsing, contentLength, - Uri.encode(filename), downloadPath); - isDownloadStarted = true; + // check for permission + if (!hasPermission(permission.WRITE_EXTERNAL_STORAGE)) { + requestPermissions(new String[] {permission.WRITE_EXTERNAL_STORAGE}, + ++nextRequestCode); + } else { + download(); + } } }; + @Override + public void onRequestPermissionsResult(int requestCode, + String[] permissions, int[] grantResults) { + if (nextRequestCode == requestCode) { + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + download(); + } else { + finish(); + } + } + } + + private void download() { + // staring downloading + DownloadHandler.startingDownload(DownloadSettings.this, + url, userAgent, contentDisposition, + mimetype, referer, authorization, + privateBrowsing, contentLength, + Uri.encode(filename), downloadPath); + isDownloadStarted = true; + } + + private boolean hasPermission(String permission) { + return (checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED); + } + private OnClickListener downloadCancelListener = new OnClickListener() { @Override public void onClick(View v) { @@ -271,6 +304,9 @@ public class DownloadSettings extends Activity { protected void onResume() { super.onResume(); + if (isDownloadStarted) { + finish(); + } } @Override |