Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java

Issue 1961943003: [Cronet] Adjust to Android M permissions model (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« components/cronet.gypi ('K') | « components/cronet/android/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java
diff --git a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java
index 52cfc9bdab6b05e82d51917624ccf49b9cc251c4..b28f0af25748755a2fb7879a847fc712f8b8bd43 100644
--- a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java
+++ b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java
@@ -4,15 +4,20 @@
package org.chromium.cronet_sample_apk;
+import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
+import android.widget.Toast;
import org.chromium.base.Log;
import org.chromium.net.CronetEngine;
@@ -35,6 +40,9 @@ import java.util.concurrent.Executors;
public class CronetSampleActivity extends Activity {
private static final String TAG = "CronetSample";
+ // Permisson request code used for requesting WRITE_EXTERNAL_STORAGE permisson.
+ private static final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;
+
private CronetEngine mCronetEngine;
private String mUrl;
@@ -175,7 +183,51 @@ public class CronetSampleActivity extends Activity {
builder.build().start();
}
+ // Call this function to start writing NetLog to a file.
private void startNetLog() {
+ // Follow the prescribed formula to get WRITE_EXTERNAL_STORAGE permission as per
+ // http://developer.android.com/training/permissions/requesting.html#perm-request
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ == PackageManager.PERMISSION_GRANTED) {
+ // Permission granted already, start netlog diretly.
+ startNetLogWithPermission();
+ } else {
+ if (ActivityCompat.shouldShowRequestPermissionRationale(
+ this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
+ // User has denied permission; don't re-request but instead surface explanation.
+ Toast.makeText(this, "Storage access needed to write netlog.", Toast.LENGTH_SHORT)
+ .show();
+ } else {
+ ActivityCompat.requestPermissions(this,
+ new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
+ }
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(
+ int requestCode, String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ // Permission granted, start netlog.
+ startNetLogWithPermission();
+ } else {
+ // Permission denied, surface corresponding error message.
+ Toast.makeText(this, "Netlog cannot be written without storage access.",
+ Toast.LENGTH_SHORT)
+ .show();
+ }
+ return;
+ }
+ }
+ }
+
+ // Starts writing NetLog to file. Call startNetLog() unless WRITE_EXTERNAL_STORAGE permission
+ // is known to have been granted.
+ private void startNetLogWithPermission() {
mCronetEngine.startNetLogToFile(
Environment.getExternalStorageDirectory().getPath() + "/cronet_sample_netlog.json",
false);
« components/cronet.gypi ('K') | « components/cronet/android/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698