1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vanish136_admin-ImagePicker

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ImagePicker

【不再维护,如有bug、需求,请自行clone源码修改】

Android10以上的注意事项

В Android10 и выше из-за добавления ограничений на доступ к внешнему хранилищу, при настройке пути кэширования ImagePicker для снимков и обрезки фотографий нельзя использовать пути хранения вне области приложения, такие как:

//不可设置这样的缓存路径
Environment.getExternalStorageDirectory().getAbsolutePath()+"/mycache/"

В противном случае произойдет ошибка:

java.io.FileNotFoundException: /storage/emulated/0/mycache/IMG_1586834402947.jpg: open failed: ENOENT (No such file or directory)

Это приведет к тому, что в Activity onActivityResult() не удастся получить возвращаемые данные и вызовет сбой:

2020-04-14 11:20:09.844 13553-13553/com.lwkandroid.imagepicker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.lwkandroid.imagepicker, PID: 13553
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=111, result=-1, data=Intent { (has extras) }} to activity {com.lwkandroid.imagepicker/com.lwkandroid.imagepickerdemo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.lwkandroid.imagepicker.data.ImageBean.toString()' on a null object reference
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5097)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5138)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7811)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.lwkandroid.imagepicker.data.ImageBean.toString()' on a null object reference
        at com.lwkandroid.imagepickerdemo.MainActivity.onActivityResult(MainActivity.java:91)
        at android.app.Activity.dispatchActivityResult(Activity.java:8292)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5090)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5138)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7811)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)

Решение проблемы:

1. В AndroidManifest добавить android:requestLegacyExternalStorage="true"

ImagePicker в версии 1.4.5 уже добавил android:requestLegacyExternalStorage="true" в AndroidManifest, но это временное решение.

2. Использовать путь кэширования, специфичный для приложения

ImagePicker в 1.4.6 изменил исходный путь кэширования по умолчанию на context.getExternalFilesDir(Environment.DIRECTORY_DCIM).getAbsolutePath() и рекомендует использовать путь в области действия при создании пользовательских путей кэширования.



Для получения дополнительной информации о проекте можно обратиться к следующим блогам:
http://blog.csdn.net/lwk520136/article/details/65647033
http://www.jianshu.com/p/46b5918976e1

Скриншоты:




Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vanish136_admin-ImagePicker.git
git@api.gitlife.ru:oschina-mirror/vanish136_admin-ImagePicker.git
oschina-mirror
vanish136_admin-ImagePicker
vanish136_admin-ImagePicker
master