Java 等待用户权限继续
我想让我的应用等待用户授予权限,然后再继续应用。我搜索了关于它的其他线程,发现常见的方法是使用Java 等待用户权限继续,java,android,Java,Android,我想让我的应用等待用户授予权限,然后再继续应用。我搜索了关于它的其他线程,发现常见的方法是使用onRequestPermissionResult。现在我完全不知道如何设置它:除了请求本身之外,我是否只将程序代码放入onRequestPermissionResult中,或者我需要如何设置它,这样用户就可以请求它,然后应用程序继续运行 这是我的代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCom
onRequestPermissionResult
。现在我完全不知道如何设置它:除了请求本身之外,我是否只将程序代码放入onRequestPermissionResult
中,或者我需要如何设置它,这样用户就可以请求它,然后应用程序继续运行
这是我的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);
} else {
progressBar.setVisibility(View.VISIBLE);
GPSTracker gt = new GPSTracker(getActivity().getApplicationContext());
Location location = gt.getLocation();
if (location == null) {
Toast.makeText(getActivity(), "No location found.",
Toast.LENGTH_LONG).show();
} else {
lat = location.getLatitude();
lon = location.getLongitude();
}
new GetContacts().execute();
}
} else {
progressBar.setVisibility(View.VISIBLE);
GPSTracker gt = new GPSTracker(getActivity().getApplicationContext());
Location location = gt.getLocation();
if (location == null) {
Toast.makeText(getActivity(), "No location found.",
Toast.LENGTH_LONG).show();
} else {
lat = location.getLatitude();
lon = location.getLongitude();
}
new GetContacts().execute();
}
结果是:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 123: {
// If request is cancelled, the result arrays are empty
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
progressBar.setVisibility(View.VISIBLE);
GPSTracker gt = new GPSTracker(getActivity().getApplicationContext());
Location location = gt.getLocation();
if (location == null) {
Toast.makeText(getActivity(), "No location found.",
Toast.LENGTH_LONG).show();
} else {
lat = location.getLatitude();
lon = location.getLongitude();
}
new GetContacts().execute();
} else {
//Toast
}
return;
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 123: {
// If request is cancelled, the result arrays are empty
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//GPS method
} else {
// Toast for user
}
return;
}
}
}
就像评论中提到的Martin Zeitler一样,您必须准备棉花糖上面和下面的API,例如:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, 123);
} else {
//GPS method
}
} else {
//GPS method
}
正如你在onRequestResult的问题中提到的:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 123: {
// If request is cancelled, the result arrays are empty
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
progressBar.setVisibility(View.VISIBLE);
GPSTracker gt = new GPSTracker(getActivity().getApplicationContext());
Location location = gt.getLocation();
if (location == null) {
Toast.makeText(getActivity(), "No location found.",
Toast.LENGTH_LONG).show();
} else {
lat = location.getLatitude();
lon = location.getLongitude();
}
new GetContacts().execute();
} else {
//Toast
}
return;
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 123: {
// If request is cancelled, the result arrays are empty
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//GPS method
} else {
// Toast for user
}
return;
}
}
}
重新构造该方法,以便
GPSTracker gt…
将驻留在它自己的方法中,该方法可以从其他两个位置调用;也可以考虑<代码> API 23 <代码>在运行时没有支持请求的权限。哦,好吧,它是如何用API 23解决的,那么如果你知道的话,权限被添加到清单中,当用户下载应用程序时,他/她将被要求应用程序安装应用程序的所有权限。所以在运行时没有权限。以上所有权限都必须在清单中声明。我想这样做对于较新版本来说是不可能的,所以有必要在运行时检查它们?不要提:)。快乐编码并将知识传递给他人:)我一定会的!:)