我的一个活动需要位置许可,我写了下面的代码来获得许可。但在这种情况下,如果应用程序最初没有位置权限,则用户需要单击两次以打开活动。我能做些改变吗?这样一旦用户在权限屏幕上单击“允许”,就只能触发intent。
int PERMISSION_ALL = 1;
String[] PERMISSIONS = new String[0];
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
PERMISSIONS = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION};
}
if (!hasPermissions(getApplicationContext(), PERMISSIONS)) {
ActivityCompat.requestPermissions(StartupActivity.this, PERMISSIONS, PERMISSION_ALL);
}
if (hasPermissions(getApplicationContext(), PERMISSIONS)) {
new Thread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(StartActivity.this, Details.class);
startActivity(intent);
}
}).start();
}
最佳答案
是的,您需要覆盖onRequestPermissionsResult
首先打开onCreate
int PERMISSION_ALL = 1;
String[] PERMISSIONS = new String[0];
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
PERMISSIONS = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION};
}
if (!hasPermissions(getApplicationContext(), PERMISSIONS)) {
ActivityCompat.requestPermissions(StartupActivity.this, PERMISSIONS, PERMISSION_ALL);
}
然后覆盖
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSION_ALL) {
Intent intent = new Intent(StartActivity.this,Details.class);
startActivity(intent);
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
关于java - 一旦用户在权限屏幕上单击“允许”,就启动StartActivity,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42072770/