Android-Fragment权限
本文最后更新于 92 天前,其中的信息可能已经有所发展或是发生改变。
public class GmStoragePermissionFragment extends Fragment {
    private static GmOnPermissionResult gmOnPermissionResult;

    public static void requestPermission(Activity activity, GmOnPermissionResult permissionResult) {
        gmOnPermissionResult = permissionResult;
        activity.getFragmentManager()
                .beginTransaction()
                .add(new GmStoragePermissionFragment(), activity.getLocalClassName())
                .commitAllowingStateLoss();
    }

    private final int requestCode = 522;
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            String[] permission = new String[]{WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE};
            GameHelperInnerLog.d(">>>>>>>>>>>>>>>>>>>开始申请权限 requestCoe " + requestCode);
            requestPermissions(permission, requestCode);
        }
    }

    private boolean checkSelfPermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            return getActivity().checkSelfPermission(READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                    getActivity().checkSelfPermission(WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
        }
        return true;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        GameHelperInnerLog.d("PermissionFragment onActivityResult: ");
        if (requestCode == this.requestCode) {
            if (gmOnPermissionResult != null) {
                gmOnPermissionResult.permissionResult(checkSelfPermission());
            }
            GameHelperInnerLog.d("PermissionFragment onActivityResult: checkSelfPermission " + checkSelfPermission());
            gmOnPermissionResult = null;
            // 将Fragment移除
            getFragmentManager().beginTransaction().remove(this).commitAllowingStateLoss();
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    // or
   override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == PermissionUtils.requestCode) {
            // 需要延迟执行,不然即使授权,仍有部分机型获取不到权限
            Handler(Looper.getMainLooper()).postDelayed({
                val activity = activity ?: return@postDelayed
                val check = PermissionUtils.checkPermission(activity)
                GameHelperInnerLog.i("PermissionFragment onActivityResult: $check")
                // 回调权限结果
                onPermissionResult?.permissionResult(check)
                onPermissionResult = null
                // 将Fragment移除
                fragmentManager.beginTransaction().remove(this).commitAllowingStateLoss()
            }, 500)
        }
    }
}

本文链接:https://iichen.cn/?p=774
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇