java - 在更改意图之前提示相机许可
问题描述
我想在更改活动之前提示用户提供相机权限。如果用户允许,它将转到 QR 码扫描仪,如果用户拒绝,它将返回同一屏幕。
这是我目前拥有的
class ButtonGoToScannerClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ActivityCompat.requestPermissions(BaseMapActivity.this,
new String[]{Manifest.permission.CAMERA},
1);
Intent intent = new Intent(BaseMapActivity.this, BarCodeReaderActivity.class);
startActivityForResult(intent, ITEM_LOCATION_REQUEST);
}
}
}
解决方案
这是您可以做的,首先请求许可
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA},
1);
现在检查是否允许权限
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(BaseMapActivity.this, BarCodeReaderActivity.class);
startActivityForResult(intent, ITEM_LOCATION_REQUEST);
// permission was granted, yay! Do the
// camera-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(MainActivity.this, "Permission denied for camera", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
希望这可以帮助
推荐阅读
- angular - Angular Observables
- java - 防止 Common Navigator Framework 中的树标签和图像重叠
- javascript - 如何在打字稿中获得“this”的范围
- spring - Spring MVC 圆形视图路径
- c# - UWP 等待 Textbox.Textchanged 事件触发
- vue.js - 使用具有不同路由但具有不同道具的相同视图组件
- neo4j - 几乎相等的 Cypher 查询,执行时间大不相同
- ansible - 运行ansible playbook在openstack上创建环境时出错
- javascript - 如何使我的 npm typescript 模块在简单的 Javascript 项目中可用?
- java - 通过在类路径中提供 jar 将 Tomcat 转换为 TomEE?