Как сохранить картинку, нажатую камерой, в android? - PullRequest
0 голосов
/ 25 мая 2020

Я разрабатываю приложение «Контакты». Чтобы добавить изображение контакта, я создал диалоговое окно, в котором показаны следующие 2 параметра ->

1: Сделать новое изображение

2: Выбрать изображение из памяти

Когда я использую 1-й вариант, изображение, по которому щелкнула камера, не сохраняется. Я получаю это в логарифме. Что я могу сделать, чтобы сохранить изображение, полученное камерой?

    ` E/ImageLoader: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{417788c 11498:com.example.contactslist/u0a273} (pid=11498, uid=10273) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{417788c 11498:com.example.contactslist/u0a273} (pid=11498, uid=10273) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
    at android.os.Parcel.createException(Parcel.java:1953)
    at android.os.Parcel.readException(Parcel.java:1921)
    at android.os.Parcel.readException(Parcel.java:1871)
    at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4087)
    at android.app.ActivityThread.acquireProvider(ActivityThread.java:6106)
    at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2616)
    at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1844)
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1457)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1310)
    at android.content.ContentResolver.openInputStream(ContentResolver.java:1030)
    at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromContent(BaseImageDownloader.java:225)
    at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:92)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:291)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:274)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:230)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

    2020-05-25 21:15:51.603 11498-11648/com.example.contactslist E/ImageLoader: UIL doesn't support scheme(protocol) by default [null]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))
java.lang.UnsupportedOperationException: UIL doesn't support scheme(protocol) by default [null]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))
    at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromOtherSource(BaseImageDownloader.java:280)
    at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:99)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:291)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:274)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:230)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

`

1 Ответ

0 голосов
/ 25 мая 2020

Для доступа к камере вам необходимо разрешение для камеры, начиная с Lollipop OS.

Чтобы получить доступ к камере, сначала добавьте эту строку в свой файл манифеста:

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

Для завершения перейдите по этой ссылке код: https://developer.android.com/training/camera/photobasics#TaskManifest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...