plectrum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 83e3fe5afcba5434f6e975c2a486bbc2ebfdd339
parent 234d1ba82f83e577b6ebc286cae7fbc83cca5960
Author: gstraube <gstraube@mailbox.org>
Date:   Thu, 24 Aug 2017 16:29:22 +0200

Ask for permission at runtime

Diffstat:
Mapp/build.gradle | 4++--
Mapp/src/main/java/com/github/cythara/MainActivity.java | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
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(); + } + } + } + } }