java – ActivityCompat.requestPermissions不显示提示

前端之家收集整理的这篇文章主要介绍了java – ActivityCompat.requestPermissions不显示提示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试请求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接收.

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

猜你在找的Java相关文章