2016-02-07 3 views
15

1- Einige Kollegen (die ein Android-Entwickler mit Android Studio sind) ist ein Problem konfrontiert, wenn er seine Anwendung auf meinem Handy Test (was a Nexus 5 mit Android 6.0.1), das Problem ist, dass er, wenn er ein Bild aus einer Galerie nimmt es mit ihm in Ordnung funktioniert, aber wenn ein Foto von der Kamera zeigt keine, er vermutet, dass das Bild er speichert am Telefon nicht gerettet werden, er vermutet, es ist ein Erlaubnissproblem, für ihn funktioniert es auf Galaxie, aber nicht auf Nexus. in Android 6.0.1 wird die Kamera Foto Abrufen nicht funktioniert

2- die gleiche Sache mit mir in der Einheit geschieht ich ein Plugin gekauft, das OK auf meinem Handy in der Vergangenheit zu arbeiten (wenn ich eine Kamera Foto nehmen) und jetzt, nachdem ich aktualisierte Es ist nicht mehr Ich nehme das Bild, ich gehe zur Kamera und gehe zurück zur Anwendung, ohne etwas in die Ansicht geladen zu haben wie zuvor.

das ist, was logcat zeigt

--------- beginning of main 
02-07 16:36:10.272  203-813/? D/audio_hw_primary﹕ out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2 
02-07 16:36:10.282  203-813/? D/audio_hw_primary﹕ select_devices: out_snd_device(2: speaker) in_snd_device(0: none) 
02-07 16:36:10.282  203-813/? D/msm8974_platform﹕ platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15) 
02-07 16:36:10.282  203-813/? D/audio_hw_primary﹕ enable_snd_device: snd_device(2: speaker) 
02-07 16:36:10.284  203-813/? D/audio_hw_primary﹕ enable_audio_route: apply and update mixer path: low-latency-playback 
02-07 16:36:10.289 24484-24484/? W/CAM_ActivityCloser﹕ WARNING: Activity was artificially finished: CameraActivityController was closed. 
02-07 16:36:10.302 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ START onPause: Activity = [email protected]e256d 
02-07 16:36:10.303 24484-27584/? W/CAM2PORT_AndCamAgntImp﹕ Releasing camera without any camera opened. 
02-07 16:36:10.305 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ END onPause: Activity = [email protected]e256d 
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ onActivityResult 
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ RESULT_OK 
02-07 16:36:10.329 25275-25275/? I/Unity﹕ **[CameraDemo] onCaptureImageFail** 

Warum dies geschieht? Und wie löst man es?

+0

nicht wahr? Wird diese Unity3D generiert? – Fattie

+0

Dieses Problem ist unglaublich schwierig: http://StackOverflow.com/a/7411824/294884 http://StackOverflow.com/A/22282988/294884 http://StackOverflow.com/A/17922913/294884 – Fattie

+0

Siehe http: //developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE: * Wenn Ihre App auf M und höher abzielt und deklariert, dass Sie die CAMERA-Berechtigung verwenden, die nicht gewährt wird, führt der Versuch, diese Aktion zu verwenden, zu a Sicherheitsaußnahme.* –

Antwort

1

die Lösung war um Erlaubnis in einer Warnung zu fragen, nicht nur die Genehmigung in Manifest erteilen.

+0

können Sie klären, was Sie hier bedeuten? Ich erhalte diese Fehlermeldung, wenn ich die ACTION_IMAGE_CAPTURE-Intention starte, die keine Berechtigungen erfordert (da Ihre App nicht die ist, die tatsächlich mit der Kamera kommuniziert) – Eric

1

Ich weiß nicht viel über die Einheit und verzeihen Sie mir, wenn das nicht hilft. Im Allgemeinen, um alles richtig zu arbeiten in Bezug auf die Kamera-Hardware verwenden und das Bild in der nativen Android speichern, sollte die AndroidManifest.xml Datei die folgende innerhalb der Anwendung Tag enthalten:

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

die Manifest-Datei zwicken von der Einheit, hier ist eine Anleitung, die ich fand: https://matthewongamedesign.wordpress.com/2013/06/08/unity-and-the-android-manifest-file/

+0

das hat nicht geholfen, dasselbe. – DeyaEldeen

+0

manifest Berechtigungen werden nicht auf api lvl 23+ – dgngulcan

0

Es sieht aus wie eine Laufzeit Berechtigungsprüfung Problem. Android hat die Laufzeit-Berechtigungsprüfung von API 23 (Marshmallow) eingeführt.

http://developer.android.com/training/permissions/requesting.html

Ich hoffe, dass dies hilfreich ist.

+0

Ja, ich habe die Antwort bereits vor einer Stunde geschrieben und akzeptierte es, danke gaurav4sarma. – DeyaEldeen

+1

Es tut mir leid, aber ich dachte, dies wäre hilfreich für alle zukünftigen Besucher, weil Ihre Antwort nie erwähnt, dass die Laufzeit Erlaubnis überprüfen Sie daher den Link. Egal, ich hoffe, jemand findet es hilfreich, Mit freundlichen Grüßen –

0

haben Sie die Berechtigung zum Zugriff auf die Galerie erteilt? Bitte senden Sie Ihren Code ..

+0

der eine gaurav4sarma geschrieben: http://developer.android.com/training/permissions/request.html – DeyaEldeen

2

Sie haben für die Erlaubnis, in der Aktivität

in Ihrer Funktion fragen: diese

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (!Settings.System.canWrite(this)) { 
      requestPermissions(new String[]{Manifest.permission.CAMERA, 
        Manifest.permission.CAMERA}, REQUEST_CAMERA); 
     } else { 
      takeFromCamera(); 
     } 
    } else { 
     takeFromCamera(); 
    } 

und fügen Sie in Ihrer Tätigkeit

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    if (requestCode == REQUEST_CAMERA) { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       takeFromCamera(); 
      } else { 
       Log.e("Permission", "Denied"); 
      } 
    } 
} 

in manifest:

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

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />