Android请求麦克风权限+系统权限页面回调
生活随笔
收集整理的這篇文章主要介紹了
Android请求麦克风权限+系统权限页面回调
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
一、效果展示
二、代碼實(shí)現(xiàn)
1、設(shè)置權(quán)限
2、UI
3、代碼邏輯
一、效果展示
?
二、代碼實(shí)現(xiàn)
1、設(shè)置權(quán)限
在manifest文件中配置RECORD_AUDIO權(quán)限
<uses-permission android:name="android.permission.RECORD_AUDIO" />2、UI
簡單的button按鈕,點(diǎn)擊觸發(fā)動態(tài)申請權(quán)限邏輯
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><Buttonandroid:id="@+id/btPermission"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="請求mic權(quán)限" /></LinearLayout>3、代碼邏輯
package com.example.myapplication.activity;import static android.content.pm.PackageManager.PERMISSION_GRANTED;import android.app.AlertDialog; import android.app.Dialog; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast;import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity;import com.example.myapplication.R; import com.example.myapplication.utils.PermissionUtil;import kr.co.namee.permissiongen.PermissionGen;/*** Created by tzbc*/ public class AlarmActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "AlarmActivity";private static final int REQUEST_CODE_MIC_PERMISSION = 100;private static final int REQUEST_CODE_MIC_SETTING_PERMISSION = 101;private Button permission;private Dialog micDialog;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.alarm_activity);permission = findViewById(R.id.btPermission);permission.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v == null) {return;}switch (v.getId()) {case R.id.btPermission:judgeNeedRequestMicPermission();break;default:break;}}/*** 請求mic權(quán)限*/private void judgeNeedRequestMicPermission() {Log.v(TAG, "judgeNeedRequestMicPermission...");boolean hasAudioPermission = PermissionUtil.judgeHasAudioPermission(this);if (!hasAudioPermission) {PermissionUtil.requestAudioPermission(this, REQUEST_CODE_MIC_PERMISSION);} else {Toast.makeText(this, "已經(jīng)授予麥克風(fēng)權(quán)限", Toast.LENGTH_SHORT).show();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);if (REQUEST_CODE_MIC_PERMISSION == requestCode) {//用戶授予權(quán)限if (PERMISSION_GRANTED == grantResults[0]) {showPermissionOnToast();} else {//權(quán)限被拒絕boolean showRequestPermissionRationale = PermissionUtil.shouldShowRequestPermissionRationale(this);if (!showRequestPermissionRationale) {//向用戶解釋權(quán)限使用showMicPermissionDialog();} else {showPermissionOffToast();}}}}private void showMicPermissionDialog() {if (micDialog == null) {micDialog = new AlertDialog.Builder(this).setTitle("test").setMessage("需要使用您的麥克風(fēng)權(quán)限").setPositiveButton("Yes", (dialog, which) -> {//跳轉(zhuǎn)至系統(tǒng)頁面gotoAudioSettingIntent();micDialog.dismiss();}).setNegativeButton("No", (dialog, which) -> {showPermissionOffToast();micDialog.dismiss();}).show();} else {micDialog.show();}micDialog.setCancelable(false);}private void gotoAudioSettingIntent() {Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.setData(Uri.fromParts("package", getPackageName(), null));startActivityForResult(intent, REQUEST_CODE_MIC_SETTING_PERMISSION);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (REQUEST_CODE_MIC_SETTING_PERMISSION == requestCode) {Log.v(TAG, "onActivityResult REQUEST_CODE_MIC_SETTING_PERMISSION");dismissMicDialog();//從系統(tǒng)頁面返回再次獲取當(dāng)前mic權(quán)限是否授予boolean hasAudioPermission = PermissionUtil.judgeHasAudioPermission(this);Log.v(TAG, "onActivityResult hasAudioPermission: " + hasAudioPermission);if (hasAudioPermission) {showPermissionOnToast();} else {showPermissionOffToast();}}}private void dismissMicDialog() {if (micDialog != null) {micDialog.dismiss();micDialog = null;}}private void showPermissionOnToast() {Toast.makeText(this, "麥克風(fēng)權(quán)限開啟成功", Toast.LENGTH_SHORT).show();}private void showPermissionOffToast() {Toast.makeText(this, "麥克風(fēng)權(quán)限開啟失敗", Toast.LENGTH_SHORT).show();} }?
總結(jié)
以上是生活随笔為你收集整理的Android请求麦克风权限+系统权限页面回调的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒泡排序四种写法
- 下一篇: 瑞星、360、金山卫士、BaiduPla