小编典典

在Android 6.0中,您需要明确要求用户授予权限。仅在清单中声明它是不够的。

docs中的这篇文章是开始学习新模型的好地方,但我会做一个简短的总结。

每次执行需要“危险许可”的操作时,都需要检查当前是否已授予许可,因为用户可以随时将其撤消。

这可以通过该checkSelfPermission方法来完成。

if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_PHONE_STATE)

!= PackageManager.PERMISSION_GRANTED) {

// We do not have this permission. Let's ask the user

}

您可以使用requestPermissions方法请求权限,例如

ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE);

其中PERMISSION_READ_STATE是您定义的常数整数,以便稍后检入回调方法。

然后onRequestPermissionsResult,您将在活动中覆盖并查看是否已授予许可。如果是这样,则可以继续执行危险的操作。

@Override

public void onRequestPermissionsResult(int requestCode,

String permissions[], int[] grantResults) {

switch (requestCode) {

case PERMISSION_READ_STATE: {

if (grantResults.length > 0

&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

// permission granted!

// you may now do the action that requires this permission

} else {

// permission denied

}

return;

}

}

}

2020-11-13

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐