diff options
author | ma jiamin <jiamin.ma_2@nxp.com> | 2016-01-04 09:21:21 +0800 |
---|---|---|
committer | Jindong <jindong.yue@nxp.com> | 2020-07-10 10:06:10 +0800 |
commit | 6635c9ebd25ff6caed4b35b04f2801ae2776282a (patch) | |
tree | 05990de6a4acaa1ce085fce4660a2f05f7574903 | |
parent | 80ce5b5d6eadb1d4419ba7cce4ba31f83c6984ce (diff) | |
download | SoundRecorder-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.java | 54 |
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; + } + } } |