2016-04-11 34 views
0

私はカメラインテントを使用して画像をキャプチャし、ImageViewに表示しようとしています。Androidスタジオ2 - カメラSecurityException

カメラ意図が開始されたときはいつでも、次の例外が発生します。

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 

電話番号:

@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)); 

} 

上記の例外を受信しないようにするには、正しいマニフェスト許可は何ですか?

答えて

3

あなたは正しい権限を使用している:あなたがカメラの権限にアクセスしたい場合はandroid.permission.CAMERA

あなたはマシュマロ上で動作しているとき、実行時にそれを聞いています。

許可が付与されて、それはそうではないときに許可を要求されているかどうかをまずチェック:

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

これは文書で詳細にここで説明されていますhttp://developer.android.com/training/permissions/requesting.html

+0

OKを、上記でセキュリティ例外が表示されなくなりました。今、カメラはAndroidエミュレータで開きますが、「カメラに接続できません」と表示されます。 コードが実行される "MainActivity"クラスを表す "thisActivity"に "this"を渡します。これは正しいです? – user2966445

+0

AVDマネージャでカメラが「なし」に設定されていませんでした。更新され、今カメラが動作します。 – user2966445

関連する問題