冲刺三

今天做了什么:在home_fragment页面我设置了一个imagbutton,通过点击能够实现首先申请相机权限,接着打开相机,然后将拍摄的相片放到对应页面的imageview中。

private void takePhoto() {
// 检查相机权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
// 已授予相机权限,执行拍照逻辑
doTake();
} else {
// 未授予相机权限,向用户请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_CAMERA);
}
}首先在这个方法中进行权限检测,
然后
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限被授予,可以进行相应的操作
// 在这里进行访问文件的操作
doTake();
} else {
Toast.makeText(this, "需要读取外部存储权限才能访问文件", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,homeFragment.class);
startActivity(intent);
}

}
在其中进行回调,发起获取权限申请;
private void doTake() {
File imageTemp = new File(getExternalCacheDir(), "imageOut.jpeg");
if (imageTemp.exists()) {
imageTemp.delete();
}
try {
imageTemp.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

if (Build.VERSION.SDK_INT > 24) {
// contentProvider
imageUri = FileProvider.getUriForFile(this, "com.example.vastland.fileprovider", imageTemp);
} else {
imageUri = Uri.fromFile(imageTemp);
}
Intent intent = new Intent();
intent.setAction("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, REQUEST_CODE_TAKE);
}
 
posted @ 2024-05-14 17:49  ZzHhyao  阅读(17)  评论(0)    收藏  举报