日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android --- 动态获取定位权限时: Fragment 中 onRequestPermissionsResult 方法不执行

發布時間:2025/3/21 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android --- 动态获取定位权限时: Fragment 中 onRequestPermissionsResult 方法不执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天我在寫百度地圖 API 定位功能的時候遇到了這樣一個問題,需要在打開 APP 首頁的時候動態獲取定位權限,然后我的代碼是這樣寫的(在 Fragment 中)

@Nullablepublic View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_home,container,false);Request();return view;}void Request() { // 動態獲取權限方法if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (ContextCompat.checkSelfPermission(getContext(),Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 200); // 200 是回調識別碼}else {//開始定位initLocation();}}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode){case 200: // 剛才的識別碼if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ // 用戶同意權限,執行我們的操作initLocation(); // 開始定位}else{ // 用戶拒絕之后,當然我們也可以彈出一個窗口,直接跳轉到系統設置頁面Toast.makeText(getActivity(),"未開啟定位權限,請手動到設置去開啟權限",Toast.LENGTH_LONG).show();}break;default:break;}}

然而 onRequestPermissionsResult 方法并沒有回調,沒有回調的話,我就不能執行定位方法,原因是

在Fragment中我們不能通過ActivityCompat.requestPermissions去請求,因為這樣請求Fragment不能收到onRequestPermissionsResult。所以我們應該直接用XXXFragment.this.requestPermissions去請求權限

如果你寫了 ActivityCompat.requestPermissions 那么你的回調方法就要寫到 Activity 中,我自己不信,就把 onRequestPermissionsResult 放到了 fragment 的父 Activity 中,果然,在 Activity 中回調了。

多謝博主指點:https://blog.csdn.net/z302766296/article/details/73549807

總結

以上是生活随笔為你收集整理的Android --- 动态获取定位权限时: Fragment 中 onRequestPermissionsResult 方法不执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。