加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ActivityCompat.requestPermissions不显示提示

发布时间:2020-12-14 23:47:35 所属栏目:Java 来源:网络整理
导读:我正在尝试请求ACCESS_FINE_LOCATION权限以获取用户的当前位置. 我的日志记录表明我的应用程序在查询ContextCompat.checkSelfPermission()时当前没有此权限,但在调用ActivityCompat.requestPermissions()时,不会显示任何内容. 我的Google地图代码(实现OnMapR
我正在尝试请求ACCESS_FINE_LOCATION权限以获取用户的当前位置.

我的日志记录表明我的应用程序在查询ContextCompat.checkSelfPermission()时当前没有此权限,但在调用ActivityCompat.requestPermissions()时,不会显示任何内容.

我的Google地图代码(实现OnMapReadyCallback和ActivityCompat.OnRequestPermissionsResultCallback())位于FragmentActivity中.

我已经设法让requestPermissions()函数在应用程序中的其他活动中成功运行,它只是带有Google地图的那个.放置在Activity的onCreate()方法或onMapReady()(它需要去的地方)时,它不起作用.

if(ContextCompat.checkSelfPermission(LocationActivity.this,android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Log.d(TAG,"not granted");
        final String[] permissions = new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION};
    if(ActivityCompat.shouldShowRequestPermissionRationale(this,android.Manifest.permission.ACCESS_FINE_LOCATION)) {
            Log.d(TAG,"rationale");
            // Explain to the user why permission is required,then request again
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("We need permissions")
                    .setCancelable(false)
                    .setPositiveButton("OK",new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                            ActivityCompat.requestPermissions(LocationActivity.this,permissions,1);
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();

    } else {
        Log.d(TAG,"request" + android.Manifest.permission.ACCESS_FINE_LOCATION);
        // If permission has not been denied before,request the permission
        ActivityCompat.requestPermissions(LocationActivity.this,1);
    }
} else {
    Log.d(TAG,"granted");
}

有任何想法吗?它与我的Activity类(FragmentActivity)有关,还是可能是异步调用权限请求的Google地图?

解决方法

完全剥离我的课程后,它仍然无法正常工作,我意识到这个Activity正在使用TabHost进行实例化.

当我停止使用TabHost时,提示会成功显示.我猜新的权限提示不支持TabHosts – 这是一个错误吗?

与App requests aren’t showing up相同的问题

我最终创建了一个PermissionsRequestActivity,它代表我的TabHost处理权限请求和响应,然后退出(通过Intent extras Bundle传递请求的权限信息).
它将响应作为广播传回给请求,由我的TabHost接收.

一点点黑客,但工作正常!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读