写Android的功能Api给别人用,自己测了很多次都没问题,结果跑到别人手机上就闪退,心塞了半天,后来看到Log发现是手机权限问题。
于是想起之前写过一个内存写入测试Apk,也遇到过类似的问题。在5.0平台上能够正常运行,放到6.0的手机上就会出现权限问题闪退。
直接贴代码
private void startAuthorize(String[] permissions) {
//android 6.0以上如果授权失败会finish掉页面
if (Build.VERSION.SDK_INT >= 23) {
ArrayList<String> deniedPermissions = new ArrayList<String>();
for (int i = 0; permissions != null && i < permissions.length; i++) {
String permission = permissions[i];
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
deniedPermissions.add(permission);
}
}
int count = deniedPermissions.size();
if (count > 0) {
String[] array = new String[count];
deniedPermissions.toArray(array);
requestPermissions(array, PERMISSION_REQ);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case PERMISSION_REQ:
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(GetAuthorizationActivity.this, "您需要授权才能使用", Toast.LENGTH_LONG).show();
return;
}
}
break;
}
}