Android请求麦克风权限+系统权限页面回调
生活随笔
收集整理的這篇文章主要介紹了
Android请求麦克风权限+系统权限页面回调
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、效果展示
二、代碼實現
1、設置權限
2、UI
3、代碼邏輯
一、效果展示
?
二、代碼實現
1、設置權限
在manifest文件中配置RECORD_AUDIO權限
<uses-permission android:name="android.permission.RECORD_AUDIO" />2、UI
簡單的button按鈕,點擊觸發動態申請權限邏輯
<?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權限" /></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權限*/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, "已經授予麥克風權限", 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) {//用戶授予權限if (PERMISSION_GRANTED == grantResults[0]) {showPermissionOnToast();} else {//權限被拒絕boolean showRequestPermissionRationale = PermissionUtil.shouldShowRequestPermissionRationale(this);if (!showRequestPermissionRationale) {//向用戶解釋權限使用showMicPermissionDialog();} else {showPermissionOffToast();}}}}private void showMicPermissionDialog() {if (micDialog == null) {micDialog = new AlertDialog.Builder(this).setTitle("test").setMessage("需要使用您的麥克風權限").setPositiveButton("Yes", (dialog, which) -> {//跳轉至系統頁面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();//從系統頁面返回再次獲取當前mic權限是否授予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, "麥克風權限開啟成功", Toast.LENGTH_SHORT).show();}private void showPermissionOffToast() {Toast.makeText(this, "麥克風權限開啟失敗", Toast.LENGTH_SHORT).show();} }?
總結
以上是生活随笔為你收集整理的Android请求麦克风权限+系统权限页面回调的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒泡排序四种写法
- 下一篇: Android 权限清单大全