Android(安卓)Fragment 申请权限 onRequestPermissionsResult 不返回
16lz
2021-01-26
一般申请权限都是在启动页或者主页面,比如之前我写的一篇文章:
Android 6.0 权限机制详解
但是都是在Activity 里申请的,今天闲着无事,在Fragment 里申请 发现了一点问题。
首先添加权限:
申请SD卡权限(Fragment)
if(ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.CALL_PHONE},0); }
回调:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { //super.onRequestPermissionsResult(requestCode, permissions, grantResults); Log.e(TAG,"requestCode===="+requestCode); switch (requestCode) { case 0: if(grantResults[0]==PackageManager.PERMISSION_GRANTED) { Log.e(TAG,"你申请了SD卡权限"); Toast.makeText(getActivity(),"你申请了SD卡权限",Toast.LENGTH_LONG).show(); } break; } }
代码运行,权限申请倒是成功了,但是没用回调!这是怎么回事呢?原来在Fragment 中 申请权限要这样写:
if(ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0); }
运行起来:Log
11-18 09:33:28.705 16497-16497/com.example.auser.androidcode E/PermissionFragment: requestCode====0 你申请了SD卡权限
这样就Ok了。
更多相关文章
- Android(安卓)adb的权限问题(可以不通过adb,而直接访问.db文件)
- android权限列表
- Android(安卓)studio3.0上运行opencv3.2.0自带人脸识别实例Demo
- Android(安卓)开发常见问题
- android adb shell 修改权限
- DELPHI XE5/6/7 android 无线真机调试
- service与Thread的区别
- Android(安卓)ionic工程中调用webrtc获取视频流
- Android(安卓)需要动态申请的权限以及EasyPermission 的使用