| 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);
|
|
|