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传递请求的权限信息). 一点点黑客,但工作正常! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
