commit c85168f9aec45771995a08b87d3042ff9e49b478
parent a1a1ba3d8f135589478616a8c95b31300a1e9d80
Author: gstraube <gstraube@mailbox.org>
Date: Tue, 5 Feb 2019 18:32:48 +0100
Ignore invalid permission result
"Note: It is possible that the permissions request interaction with the
user is interrupted. In this case you will receive empty permissions and
results arrays which should be treated as a cancellation."
Source: https://developer.android.com/reference/android/app/Activity#onRequestPermissionsResult(int,%20java.lang.String[],%20int[])
Signed-off-by: gstraube <gstraube@mailbox.org>
Diffstat:
1 file changed, 24 insertions(+), 19 deletions(-)
diff --git a/app/src/main/java/com/github/cythara/MainActivity.java b/app/src/main/java/com/github/cythara/MainActivity.java
@@ -66,8 +66,7 @@ public class MainActivity extends AppCompatActivity implements TaskCallbacks,
Manifest.permission.RECORD_AUDIO);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this,
- new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO_PERMISSION);
+ requestRecordAudioPermission();
} else {
startRecording();
}
@@ -181,23 +180,24 @@ public class MainActivity extends AppCompatActivity implements TaskCallbacks,
@NonNull int[] grantResults) {
switch (requestCode) {
case RECORD_AUDIO_PERMISSION: {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- startRecording();
- } else {
- AlertDialog alertDialog = new Builder(MainActivity.this).create();
- alertDialog.setTitle(R.string.permission_required);
- alertDialog.setMessage(getString(R.string.microphone_permission_required));
- alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.ok),
- (dialog, which) -> {
- dialog.dismiss();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- finishAffinity();
- } else {
- finish();
- }
- });
- alertDialog.show();
+ if (grantResults.length > 0) {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ startRecording();
+ } else {
+ AlertDialog alertDialog = new Builder(MainActivity.this).create();
+ alertDialog.setTitle(R.string.permission_required);
+ alertDialog.setMessage(getString(R.string.microphone_permission_required));
+ alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.ok),
+ (dialog, which) -> {
+ dialog.dismiss();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ finishAffinity();
+ } else {
+ finish();
+ }
+ });
+ alertDialog.show();
+ }
}
}
}
@@ -287,4 +287,9 @@ public class MainActivity extends AppCompatActivity implements TaskCallbacks,
pitchAdjuster = new PitchAdjuster(referencePitch);
}
+
+ private void requestRecordAudioPermission() {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO},
+ RECORD_AUDIO_PERMISSION);
+ }
}