2016-04-09 21 views
1

Öğrenciyim ve ben görüntü tanıma konusunda bir uygulama yapmam istendi ama kamerayı kullanmaya çalışırken hep olsun:Android'de kamera izniyle bu hatayı nasıl çözebilirim?

E/CameraService: İzin Reddi: kamerayı kullanamaz

: Burada
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)); 
} 

benim açıktır: Tüm

şey ben apaçık üzerinde iznini ekleyin ve ben de zamanında üzerinde izin isteğini kullanılan olmasıdır

<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

İzinler istekte ve özellikler ' 'etiketlerinin dışına gider. –

+0

Olası izin [İzin reddedildi (İNTERNET izni yok mu?): Ancak izin verildi] (http://stackoverflow.com/questions/25135595/permission-denied-missing-internet-permission-but-permission-is-given) –

+0

Başkalarının işaret ettiği gibi, etiketlerinin yanlış yere sahip olmasının yanı sıra, izne sahip olana kadar 'startActivity()' diyemezsiniz. Şu anda, sizden izin alıp almadığınızı belirtin. – CommonsWare

cevap

3

yerleştirin kullanımları-izni ve kullanır-özelliğini aktivite ve uygulama etiketinin dışında tarama faaliyetinden

<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> 

Ayrıca eğer döngü için

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

} 
değiştirmek
0

Benzer bir sorun yaşadım. Benim bildirim dosyası

<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> 

Ve benim sorun çözüldü kodu gibi oldu: izni benim için verilmiş olmasaydı, başka deyişle

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

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

, ben programlı

İlgili konular