首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android上设置摄像头权限?

如何在android上设置摄像头权限?
EN

Stack Overflow用户
提问于 2021-01-08 19:32:37
回答 3查看 2.2K关注 0票数 0

我正试图使用这台相机,但由于某种原因,相机在几天前就停止了。

我有美甲的许可,现在当我要拍照的时候,上面写着

代码语言:javascript
复制
"java.io.ioexception permission denied"

这是舱单

代码语言:javascript
复制
   <uses-permission android:name="android.permission.CAMERA" />

我就是这样拍照片的

代码语言:javascript
复制
                        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和罚款相同的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-08 20:41:03

试试看

代码语言:javascript
复制
android:requestLegacyExternalStorage="true"

在应用程序标签内的清单上。也许相机权限是可以的,但是外部写却不是。

票数 1
EN

Stack Overflow用户

发布于 2021-01-08 19:51:41

如果您在清单文件中添加了这一行:

然后,当你运行你的应用程序时,你也需要请求这个许可。为此,需要在onCreate之上的类中设置一个变量,如下所示:

代码语言:javascript
复制
private static final int MY_CAMERA_REQUEST_CODE = 100;

之后,在您的onCreate中复制以下内容:

代码语言:javascript
复制
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_REQUEST_CODE);
}

这将检查您的用户是否批准您使用他的手机相机。如果没有,它将要求他这样做,将显示警报对话框。在他回复之后,你需要得到这个答复,并做相应的事情。要做到这一点,请将其添加为函数:

代码语言:javascript
复制
@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();
        }
    }
}

在这条线内:

代码语言:javascript
复制
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
            }

你可以做你想做的事,前。开始一个新的活动,否则。每次你想要启动相机时,只要检查上面的权限,看看用户是否批准了它,如果没有通知他,或者在你的其他活动中再次这样问他。

要开始拍摄相机,您可以使用以下内容:

代码语言:javascript
复制
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中

代码语言:javascript
复制
@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);
    }
}

要将照片保存在设备上,还需要以下两个权限:

代码语言:javascript
复制
<manifest ...>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>

记住,Android上有两种不同类型的权限。

  1. 正常权限(不需要向用户请求)
  2. 危险的权限(需要询问)

您需要使用的所有三种权限都被归类为危险:

代码语言:javascript
复制
<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" />

因此,您必须向用户请求该权限。

有关更多信息,请查看拍照上的文档。查看请求应用程序权限上的文档

票数 0
EN

Stack Overflow用户

发布于 2021-01-08 19:56:50

将此用于来自用户的请求运行时权限:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65635337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档