Ответ 1
решение заключалось в том, чтобы запросить разрешение в предупреждении, а не только предоставить разрешение в манифесте.
1 - Некоторый коллега (который является разработчиком Android с использованием студии Android) сталкивается с проблемой, когда он тестирует свое приложение на моем телефоне (что является связующим звеном 5 с андроидом 6.0.1), проблема, с которой он сталкивается, заключается в том, что, когда он берет изображение из галереи, он работает с ним нормально, но при принятии фото с камеры не отображается, он подозревает, что изображение, которое он сохраняет на телефоне, не сохраняется, он подозревает, что это проблема разрешения, поскольку он работает на галактике, но не на связи.
2 - то же самое происходит со мной в единстве Я купил плагин, который раньше работал на моем телефоне (когда я снимаю фотоаппарат), а теперь после того, как я обновил его, больше не снимаю изображение, я имею в виду, что я иду в камеру и возвращаюсь к приложению, не имея ничего загруженного в виде, как раньше.
это то, что показывает logcat
--------- 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**
Почему это происходит? И как его решить?
решение заключалось в том, чтобы запросить разрешение в предупреждении, а не только предоставить разрешение в манифесте.
Вы должны спросить разрешения в действии
в вашей функции:
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();
}
и добавьте это в свою деятельность
@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");
}
}
}
в манифесте:
<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" />
Я мало знаю об единстве и прошу прощения, если это не поможет. В общем, для того, чтобы все правильно работало с использованием аппаратного обеспечения камеры и сохраняло изображение в собственном андроиде, файл androidmanifest.xml должен включать в себя тег приложения:
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Чтобы настроить файл манифеста из единицы, вот руководство, которое я нашел: https://matthewongamedesign.wordpress.com/2013/06/08/unity-and-the-android-manifest-file/
Это похоже на проверку проверки времени выполнения. Android внедрил проверку разрешений времени выполнения от API 23 (зефир) дальше.
http://developer.android.com/training/permissions/requesting.html
Я надеюсь, что это будет полезно.
предоставили ли вы разрешение на доступ к галерее? Пожалуйста, разместите свой код.