commit 83e3fe5afcba5434f6e975c2a486bbc2ebfdd339
parent 234d1ba82f83e577b6ebc286cae7fbc83cca5960
Author: gstraube <gstraube@mailbox.org>
Date: Thu, 24 Aug 2017 16:29:22 +0200
Ask for permission at runtime
Diffstat:
2 files changed, 58 insertions(+), 14 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
@@ -9,8 +9,8 @@ android {
applicationId "com.github.cythara"
minSdkVersion 15
targetSdkVersion 26
- versionCode 1
- versionName "1.0"
+ versionCode 2
+ versionName "1.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/app/src/main/java/com/github/cythara/MainActivity.java b/app/src/main/java/com/github/cythara/MainActivity.java
@@ -1,29 +1,34 @@
package com.github.cythara;
+import android.Manifest;
+import android.app.AlertDialog;
import android.app.FragmentManager;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements ListenerFragment.TaskCallbacks {
+ public static final int RECORD_AUDIO_PERMISSION = 0;
private static final String TAG_LISTENER_FRAGMENT = "listener_fragment";
@Override
protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- FragmentManager fragmentManager = getFragmentManager();
- ListenerFragment listenerFragment = (ListenerFragment)
- fragmentManager.findFragmentByTag(TAG_LISTENER_FRAGMENT);
+ int permissionCheck = ContextCompat.checkSelfPermission(this,
+ Manifest.permission.RECORD_AUDIO);
- if (listenerFragment == null) {
- listenerFragment = new ListenerFragment();
- fragmentManager
- .beginTransaction()
- .add(listenerFragment, TAG_LISTENER_FRAGMENT)
- .commit();
+ if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.RECORD_AUDIO}, RECORD_AUDIO_PERMISSION);
}
+
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
}
@Override
@@ -38,4 +43,43 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment.
public void onBackPressed() {
moveTaskToBack(true);
}
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
+ @NonNull int[] grantResults) {
+ switch (requestCode) {
+ case RECORD_AUDIO_PERMISSION: {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ FragmentManager fragmentManager = getFragmentManager();
+ ListenerFragment listenerFragment = (ListenerFragment)
+ fragmentManager.findFragmentByTag(TAG_LISTENER_FRAGMENT);
+
+ if (listenerFragment == null) {
+ listenerFragment = new ListenerFragment();
+ fragmentManager
+ .beginTransaction()
+ .add(listenerFragment, TAG_LISTENER_FRAGMENT)
+ .commit();
+ }
+ } else {
+ AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
+ alertDialog.setTitle("Permission required");
+ alertDialog.setMessage("Microphone permission is required. App will be closed");
+ alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ finishAffinity();
+ } else {
+ finish();
+ }
+ }
+ });
+ alertDialog.show();
+ }
+ }
+ }
+ }
}