在应用程序运行Android 6.0或更高版本时是否有必要请求它所需的每个危险权限?我已请求以下危险权限,但只有四个对话框。
预先提交
public static final String[] PERMISSIONS = new String[]{
android.Manifest.permission.CALL_PHONE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.ACCESS_COARSE_LOCATION,
android.Manifest.permission.ACCESS_FINE_LOCATION,
android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.WRITE_SETTINGS,
android.Manifest.permission.GET_ACCOUNTS,
android.Manifest.permission.CAMERA
};
对话框
1.允许应用程序拨打和管理电话?
2.允许该应用访问您设备上的照片,媒体和文件?
3.允许该应用访问此设备的位置?
4.允许应用访问您的联系人?
我无法获得android.Manifest.permission.READ_PHONE_STATE等权限, android.Manifest.permission.WRITE_SETTINGS, android.Manifest.permission.GET_ACCOUNTS, android.Manifest.permission.CAMERA,既不是代码也不是系统设置。
答案 0 :(得分:0)
特殊权限
有一些权限不像普通人那样行事 危险的权限。 WRITE_SETTINGS是 特别敏感,所以大多数应用程序不应该使用它们。如果一个应用程序 需要其中一个权限,它必须在中声明权限 显示,并发送请求用户授权的意图。该 系统通过显示详细的管理屏幕来响应意图 给用户。
<强>演示强>
public class MainActivity extends AppCompatActivity {
Context context;
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
textView = (TextView) findViewById(R.id.foodName);
textView.setText(getResources().getText(R.string.txt_name));
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean result = true;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
result = Settings.System.canWrite(context);
Log.d("TAG", "Can Write Settings: " + result);
if (result) {
Toast.makeText(context, "Write allowed :-)", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Write not allowed :-(", Toast.LENGTH_LONG).show();
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + context.getPackageName()));
startActivity(intent);
}
}
}
});
}
}