我正试图使用这台相机,但由于某种原因,相机在几天前就停止了。
我有美甲的许可,现在当我要拍照的时候,上面写着
"java.io.ioexception permission denied"这是舱单
<uses-permission android:name="android.permission.CAMERA" />我就是这样拍照片的
try {
mPhotoFile = Tools.createImageFile();
new CameraService().takePicture(CameraService.REQUEST_IMAGE_CAPTURE, contextActivity, mPhotoFile);
} catch (IOException ex) {
Log.e(TAG, "btnTakePictureSale error "+ex);
ex.printStackTrace();
}任何关于寻找什么的帮助或建议都是很棒的。又一次,上周的情况很好
我使用该应用程序的服务器版本的android和罚款相同的问题。
发布于 2021-01-08 20:41:03
试试看
android:requestLegacyExternalStorage="true"在应用程序标签内的清单上。也许相机权限是可以的,但是外部写却不是。
发布于 2021-01-08 19:51:41
如果您在清单文件中添加了这一行:
然后,当你运行你的应用程序时,你也需要请求这个许可。为此,需要在onCreate之上的类中设置一个变量,如下所示:
private static final int MY_CAMERA_REQUEST_CODE = 100;之后,在您的onCreate中复制以下内容:
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_REQUEST_CODE);
}这将检查您的用户是否批准您使用他的手机相机。如果没有,它将要求他这样做,将显示警报对话框。在他回复之后,你需要得到这个答复,并做相应的事情。要做到这一点,请将其添加为函数:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}在这条线内:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
}你可以做你想做的事,前。开始一个新的活动,否则。每次你想要启动相机时,只要检查上面的权限,看看用户是否批准了它,如果没有通知他,或者在你的其他活动中再次这样问他。
要开始拍摄相机,您可以使用以下内容:
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
} catch (ActivityNotFoundException e) {
// display error state to the user
}
}以下代码检索此图像并将其显示在ImageView中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(imageBitmap);
}
}要将照片保存在设备上,还需要以下两个权限:
<manifest ...>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>记住,Android上有两种不同类型的权限。
您需要使用的所有三种权限都被归类为危险:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />因此,您必须向用户请求该权限。
发布于 2021-01-08 19:56:50
将此用于来自用户的请求运行时权限:
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)
{
try {
mPhotoFile = Tools.createImageFile();
new CameraService().takePicture(CameraService.REQUEST_IMAGE_CAPTURE, contextActivity, mPhotoFile);
} catch (IOException ex) {
Log.e(TAG, "btnTakePictureSale error "+ex);
ex.printStackTrace();
}
}else
{
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 101);
}https://stackoverflow.com/questions/65635337
复制相似问题