Android Studio 2-相机SecurityException

use*_*445 1 java android android-studio

我正在尝试使用相机意图捕获照片并在ImageView中显示。

每当启动摄像机意图时,就会发生以下异常:

    java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE cmp=com.android.camera/.Camera } from ProcessRecord{c4afeea 3037:com.example.jt.testapp/u0a57} (pid=3037, uid=10057) with revoked permission android.permission.CAMERA
Run Code Online (Sandbox Code Playgroud)

调用代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button gallery = (Button) findViewById(R.id.btnGallery);
    gallery.setOnClickListener(new Gallery(this));

    Button camera = (Button) findViewById(R.id.btnCamera);
    camera.setOnClickListener(new Camera(this));

}
Run Code Online (Sandbox Code Playgroud)

避免收到上述异常的正确清单权限是什么?

Mar*_*ark 5

您正在使用正确的权限:android.permission.CAMERA

如果要访问“相机”权限,则必须在运行于棉花糖上的运行时询问。

首先检查是否授予了许可,如果不是,则请求许可:

if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.CAMERA)
    != PackageManager.PERMISSION_GRANTED) {
  ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.CAMERA},
            0);
}
Run Code Online (Sandbox Code Playgroud)

在文档中对此进行了详细说明:http : //developer.android.com/training/permissions/requesting.html