summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2020-07-10 15:21:01 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-07-10 15:21:01 +0000
commit6c15484c46c6c42a5e388e0d68b7231a8a8b66b6 (patch)
tree781d7d4534e1e90b20b7751faa94026e0f6513bb
parent8ea54a35af302d265f9ab1e7d5e6fc970378ded1 (diff)
parent6635c9ebd25ff6caed4b35b04f2801ae2776282a (diff)
downloadSoundRecorder-6c15484c46c6c42a5e388e0d68b7231a8a8b66b6.tar.gz
Merge "Pop up permission dialog if necessary"HEADmastermain
-rw-r--r--src/com/android/soundrecorder/SoundRecorder.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/com/android/soundrecorder/SoundRecorder.java b/src/com/android/soundrecorder/SoundRecorder.java
index 2067d6a..169c3d7 100644
--- a/src/com/android/soundrecorder/SoundRecorder.java
+++ b/src/com/android/soundrecorder/SoundRecorder.java
@@ -28,9 +28,11 @@ import android.content.Intent;
import android.content.Context;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
+import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
+import android.Manifest;
import android.media.AudioManager;
import android.media.MediaRecorder;
import android.net.Uri;
@@ -208,6 +210,11 @@ public class SoundRecorder extends Activity
static final int BITRATE_AMR = 5900; // bits/sec
static final int BITRATE_3GPP = 5900;
+ private int mNumPermissionsToRequest = 0;
+ private boolean mShouldRequestSoundPermission = false;
+ private boolean mShouldRequestStoragePermission = false;
+ private static final int PERMISSION_REQUEST_CODE = 0;
+
WakeLock mWakeLock;
String mRequestedType = AUDIO_ANY;
Recorder mRecorder;
@@ -245,6 +252,7 @@ public class SoundRecorder extends Activity
public void onCreate(Bundle icycle) {
super.onCreate(icycle);
+ checkPermission();
Intent i = getIntent();
if (i != null) {
String s = i.getType();
@@ -862,4 +870,50 @@ public class SoundRecorder extends Activity
.show();
}
}
+
+ private void checkPermission() {
+ if (checkSelfPermission(Manifest.permission.RECORD_AUDIO)
+ != PackageManager.PERMISSION_GRANTED) {
+ mNumPermissionsToRequest++;
+ mShouldRequestSoundPermission = true;
+ }
+
+ if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED) {
+ mNumPermissionsToRequest++;
+ mShouldRequestStoragePermission = true;
+ }
+
+ String[] permissionToRequest = new String[mNumPermissionsToRequest];
+ int permissionRequestIndex = 0;
+ if (mShouldRequestSoundPermission) {
+ permissionToRequest[permissionRequestIndex] = Manifest.permission.RECORD_AUDIO;
+ permissionRequestIndex++;
+ }
+ if (mShouldRequestStoragePermission) {
+ permissionToRequest[permissionRequestIndex] =
+ Manifest.permission.WRITE_EXTERNAL_STORAGE;
+ permissionRequestIndex++;
+ }
+ if (permissionToRequest.length > 0) {
+ requestPermissions(permissionToRequest, PERMISSION_REQUEST_CODE);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case PERMISSION_REQUEST_CODE:
+ if (grantResults.length > 0 &&
+ grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ Log.d(TAG, "Grant permission successfully");
+ } else {
+ Log.e(TAG, "Grant permission unsuccessfully");
+ }
+ break;
+ default:
+ break;
+ }
+ }
}