diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2020-07-10 15:21:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-07-10 15:21:01 +0000 |
commit | 6c15484c46c6c42a5e388e0d68b7231a8a8b66b6 (patch) | |
tree | 781d7d4534e1e90b20b7751faa94026e0f6513bb | |
parent | 8ea54a35af302d265f9ab1e7d5e6fc970378ded1 (diff) | |
parent | 6635c9ebd25ff6caed4b35b04f2801ae2776282a (diff) | |
download | SoundRecorder-6c15484c46c6c42a5e388e0d68b7231a8a8b66b6.tar.gz |
-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; + } + } } |