2016-04-09 31 views
1

私は学生ですし、私は、画像認識に関するアプリを作るように頼まれたが、私はカメラを使用しようとすると、私はいつも得る:Androidのカメラ権限でこのエラーを解決するにはどうすればよいですか?

E/CameraServiceを:許可拒否:カメラを使用することはできません

事は、私がマニフェストに権限を追加し、私はまた、ランタイム許可要求に使用されているものである:ここでは

public void onScanButtonClicked(View view) { 

    String[] permissos = {"android.permission.CAMERA"}; 

    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA) 
      != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(this, 
       permissos, 
       MY_PERMISSIONS_REQUEST_CAMERA 
     ); 
    } 
     startActivity(new Intent(this, ScanActivity.class)); 
} 

は私のマニフェストです:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-feature android:name="android.hardware.camera2" /> 
    <uses-feature android:name="android.hardware.camera.any" /> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ScanActivity" 
     android:label="@string/app_name" 

     android:configChanges="orientation|screenSize" 
     android:exported="true"> 
     <uses-permission android:name="android.permission.CAMERA" /> 
     <uses-feature 
      android:name="android.hardware.camera2" 
      android:required="false" /> 
     <uses-feature 
      android:name="android.hardware.camera.any" 
      android:required="false" /> 


    </activity> 
</application> 

+1

権限と機能は ''タグの外側にあります。 –

+0

[許可が拒否されました(インターネットアクセス許可がありません):許可が与えられました](http://stackoverflow.com/questions/25135595/permission-denied-missing-internet-permission-but-permission-is-given) –

+0

他の人が指摘しているように、 ''タグを間違った場所に置くことに加えて、あなたが許可を得るまで 'startActivity()'を呼び出すことはできません。今、あなたはあなたが許可を持っているかどうかにかかわらず、それを呼び出すように見えます。 – CommonsWare

答えて

3

場所の使用許可し、あなたのスキャン活動から活動し、アプリケーションタグの外

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-feature android:name="android.hardware.camera2" /> 
<uses-feature android:name="android.hardware.camera.any" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 


    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ScanActivity" 
     android:label="@string/app_name" 
     android:configChanges="orientation|screenSize" 
     android:exported="true"> 
    </activity> 
</application> 

を-機能を使用しています。また

public void onScanButtonClicked(View view) { 

String[] permissos = {"android.permission.CAMERA"}; 

if (ContextCompat.checkSelfPermission(this, 
     Manifest.permission.CAMERA) 
     != PackageManager.PERMISSION_GRANTED) { 

    ActivityCompat.requestPermissions(this, 
      permissos, 
      MY_PERMISSIONS_REQUEST_CAMERA 
    ); 

}else{ 
    startActivity(new Intent(this, ScanActivity.class)); 
} 

} 
にあればループを変更
0

私にも同様の問題がありました。 私のマニフェストファイルは

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 

     package="com.example.ildar.textureview"> 

     <uses-permission android:name="android.permission.CAMERA" /> 
     <uses-feature android:name="android.hardware.camera" android:required="true"/> 
     <uses-feature android:name="android.hardware.camera.autofocus" /> 

    .... 

</manifest> 

そして、私の問題を解決し、コードのようなものだった。つまり

if(ContextCompat.checkSelfPermission(this, 
       Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED){ 

      mCamera = Camera.open(); 
     }else{ 
      ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.CAMERA}, 0); 
     } 

、許可が私のために許可されていなかった場合、私はプログラム的にそれを要求

関連する問題