我有两个应用程序, MyService 和 MyLauncher :
toto.myservice.WRITE_DATABASE
当我首先安装 MyService 时,Android会知道新的权限,因此当我想安装 MyLauncher 时,没有问题,成功提供了权限,并且数据很容易插入。
但如果首先安装 MyLauncher ,这不起作用,系统的权限为Unknown。
我尝试在Android 6+的OnCreate
类似权限中管理它,但它似乎无法正常工作(ActivityCompat.requestPermissions
没有显示任何窗口)
在 MyService (在清单中)我以这种方式声明了权限:
<permission android:name="toto.myservice.WRITE_DATABASE"android:label="M_WRITE_DB" android:protectionLevel="normal" />
<provider android:name="MyContentProvider"
android:authorities="toto.myservice.MyContentProvider"
android:exported="true"
android:grantUriPermissions="true"
android:writePermission="toto.myservice.WRITE_DATABASE"/>
在 MyLauncher (在清单中),我以这种方式使用权限:
<uses-permission android:name="toto.myservice.WRITE_DATABASE"/>
在 MyLauncher 的OnCreate
中,我尝试拨打电话
ActivityCompat.requestPermissions(this,
new String[]{"toto.myservice.WRITE_DATABASE"},
SERVICE_PRINTER_WRITE_DATABASE);
没有显示任何窗口,并且在回调中:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case SERVICE_PRINTER_WRITE_DATABASE: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
Log.e(TAG, "grantResults.length = " + grantResults.length);
//====> I'm here, not granted
}
return;
}
}
}
所以我的最后一个问题是,如果用户以错误的顺序进行安装,是否可以在不重新安装 MyLauncher 的情况下调用权限?
由于