summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorma jiamin <jiamin.ma_2@nxp.com>2016-01-04 09:21:21 +0800
committerJindong <jindong.yue@nxp.com>2020-07-10 10:06:10 +0800
commit6635c9ebd25ff6caed4b35b04f2801ae2776282a (patch)
tree05990de6a4acaa1ce085fce4660a2f05f7574903
parent80ce5b5d6eadb1d4419ba7cce4ba31f83c6984ce (diff)
downloadSoundRecorder-6635c9ebd25ff6caed4b35b04f2801ae2776282a.tar.gz
Pop up permission dialog if necessary
Pop up dialog to grant RECORD_AUDIO and WRITE_EXTERNAL_STORAGE permission if necessary. Signed-off-by: Ma Jiamin<jiamin.ma_2@nxp.com> Signed-off-by: Jindong <jindong.yue@nxp.com> Change-Id: I470862d344c457738075d0ef35d9ff7e9e67687a
-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;
+ }
+ }
}