summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivek Sekhar <vsekhar@codeaurora.org>2015-11-21 21:26:33 -0800
committerjrizzoli <joey@cyanogenmoditalia.it>2015-12-03 19:57:02 +0100
commita3d93b1aa56fdd91c3ff98e12aa0b55a174f3e3b (patch)
treefb3814910c7e5b3c068bae04a8a0ed677d614e02
parentfb9c05fe2f0412680ec276947786785b1a9de37d (diff)
downloadandroid_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
-rw-r--r--AndroidManifest.xml.jinja25
-rw-r--r--src/com/android/browser/BrowserActivity.java12
-rw-r--r--src/com/android/browser/DownloadSettings.java48
3 files changed, 56 insertions, 9 deletions
diff --git a/AndroidManifest.xml.jinja2 b/AndroidManifest.xml.jinja2
index a9fccd4d..c6052874 100644
--- a/AndroidManifest.xml.jinja2
+++ b/AndroidManifest.xml.jinja2
@@ -47,9 +47,7 @@
<uses-permission android:name="{{ app_package_name }}.permission.WRITE_HOMEPAGE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
-
<!-- Templatize taskAffinity otherwise it will default to 'package'
defined in manifest -->
<application android:name="com.android.browser.Browser"
@@ -430,7 +428,8 @@
</application>
- <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" />
+ <!-- CM 12.1+ -->
+ <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="23" />
{{ extra_supports_gl_texture }}
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