我们可以在 android M 的服务中使用需要运行时权限的功能吗?
can we use features which require runtime permission in services in android M?
是否可以使用向服务中的用户询问 运行 时间权限的功能。我没有在服务方面做太多工作,所以我不知道有人可以提供帮助。
因为它会要求用户授予该权限,例如
Is it possible to use features which ask run time permissions from user in service.
您可以在服务中使用需要 dangerous
权限的 API。但是,您不能从服务请求权限——您必须从 Activity
.
我已经按照代码完成了这项工作,到目前为止它对我来说运行良好,没有任何错误
在Activity你启动服务的地方
if(GivenPermissions()) {
Intent i = new Intent(this,ServiceClassName);
startService(i);
}
方法代码为
private boolean GivenPermissions() {
int hasLocationPermission1 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);
int hasLocationPermission2 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION);
List<String> permissions = new ArrayList<String>();
if (hasLocationPermission1 != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (hasLocationPermission2 != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (!permissions.isEmpty()) {
ActivityCompat.requestPermissions(this, permissions.toArray(new String[permissions.size()]), REQUEST_CODE_ASK_PERMISSIONS);
return false;
}
return true;
}
因此,如果仅授予权限,则启动 service.Hope 这可能会有所帮助
是否可以使用向服务中的用户询问 运行 时间权限的功能。我没有在服务方面做太多工作,所以我不知道有人可以提供帮助。
因为它会要求用户授予该权限,例如
Is it possible to use features which ask run time permissions from user in service.
您可以在服务中使用需要 dangerous
权限的 API。但是,您不能从服务请求权限——您必须从 Activity
.
我已经按照代码完成了这项工作,到目前为止它对我来说运行良好,没有任何错误
在Activity你启动服务的地方
if(GivenPermissions()) {
Intent i = new Intent(this,ServiceClassName);
startService(i);
}
方法代码为
private boolean GivenPermissions() {
int hasLocationPermission1 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);
int hasLocationPermission2 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION);
List<String> permissions = new ArrayList<String>();
if (hasLocationPermission1 != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (hasLocationPermission2 != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (!permissions.isEmpty()) {
ActivityCompat.requestPermissions(this, permissions.toArray(new String[permissions.size()]), REQUEST_CODE_ASK_PERMISSIONS);
return false;
}
return true;
}
因此,如果仅授予权限,则启动 service.Hope 这可能会有所帮助