Проблема загрузки изображений Пикассо с Android 9.0 Pie - PullRequest
0 голосов
/ 04 ноября 2018

Я не могу загрузить изображения с помощью библиотеки Picasso в Android 9.0 Pie. На самом деле, он отлично работает для следующих версий. Это не показывает сообщение об ошибке. Кто-то поделился своими логами на Github, используя

Picasso.get().setLoggingEnabled(true);

У него есть журнал сообщений:

2018-10-19 13:13:20.467 24840-24862/com.xyz.test.testpicasso D/ViewContentFactory: initViewContentFetcherClass
2018-10-19 13:13:20.467 24840-24862/com.xyz.test.testpicasso I/ContentCatcher: ViewContentFetcher : ViewContentFetcher
2018-10-19 13:13:20.467 24840-24862/com.xyz.test.testpicasso D/ViewContentFactory: createInterceptor took 0ms
2018-10-19 13:13:20.468 24840-24862/com.xyz.test.testpicasso I/ContentCatcher: Interceptor : Catcher list invalid for com.xyz.test.testpicasso@com.xyz.test.testpicasso.MainActivity@147874166
2018-10-19 13:13:20.468 24840-24862/com.xyz.test.testpicasso I/ContentCatcher: Interceptor : Get featureInfo from config pick_mode
2018-10-19 13:13:20.485 24840-24840/com.xyz.test.testpicasso D/Picasso: Main        created      [R1] Request{https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png}
2018-10-19 13:13:20.492 24840-24864/com.xyz.test.testpicasso D/Picasso: Dispatcher  enqueued     [R1]+6ms 
2018-10-19 13:13:20.492 24840-24866/com.xyz.test.testpicasso D/Picasso: Hunter      executing    [R1]+7ms 
2018-10-19 13:13:20.555 1531-1684/? I/ActivityManager: Displayed com.xyz.test.testpicasso/.MainActivity: +114ms
2018-10-19 13:13:20.555 5475-5603/? D/PowerKeeper.Event: notifyActivityLaunchTime: com.xyz.test.testpicasso/.MainActivity totalTime: 114
2018-10-19 13:13:20.709 735-816/? W/SurfaceFlinger: Attempting to set client state on removed layer: Splash Screen com.xyz.test.testpicasso#0
2018-10-19 13:13:20.710 735-816/? W/SurfaceFlinger: Attempting to destroy on removed layer: Splash Screen com.xyz.test.testpicasso#0
2018-10-19 13:13:20.775 1531-1684/? I/Timeline: Timeline: Activity_windows_visible id: ActivityRecord{821c51 u0 com.xyz.test.testpicasso/.MainActivity t4372} time:9356677
2018-10-19 13:13:21.003 24840-24864/com.xyz.test.testpicasso D/Picasso: Dispatcher  retrying     [R1]+518ms 
2018-10-19 13:13:21.004 24840-24872/com.xyz.test.testpicasso D/Picasso: Hunter      executing    [R1]+519ms 
2018-10-19 13:13:21.513 24840-24864/com.xyz.test.testpicasso D/Picasso: Dispatcher  retrying     [R1]+1027ms 
2018-10-19 13:13:21.514 24840-24877/com.xyz.test.testpicasso D/Picasso: Hunter      executing    [R1]+1028ms 
2018-10-19 13:13:21.516 24840-24864/com.xyz.test.testpicasso D/Picasso: Dispatcher  batched      [R1]+1030ms for error
2018-10-19 13:13:21.717 24840-24864/com.xyz.test.testpicasso D/Picasso: Dispatcher  delivered    [R1]+1232ms

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Я знаю, что ответ с android:usesCleartextTraffic="true" работает, но это позволит всем соединениям быть http , а не s на всем, что, я полагаю, не то, что вы хотите в 2018.

Если вам известен домен, в который вы входите http, и вы доверяете ему , то лучше использовать конфигурацию безопасности сети .

Определить XML-файл в res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

См. cleartextTrafficPermitted="true" только для secure.example.com и его субтитров.

А затем в вашем AndroidManifest.xml добавьте android:networkSecurityConfig="@xml/network_security_config"

Вы можете добавить несколько доменов с несколькими конфигурациями, убедитесь, что некоторые из них являются https или наоборот. Выглядит более защищенным ИМХО.

0 голосов
/ 04 ноября 2018

Попробуйте использовать android:usesCleartextTraffic="true" в теге приложения вашего файла манифеста! Как я столкнулся с той же проблемой, используя Android Volley!

Согласно документации Android

Указывает, собирается ли приложение использовать сетевой трафик в открытом тексте, такой как открытый текст HTTP. Значение по умолчанию верно". Когда Атрибут имеет значение «false», компоненты платформы (например, HTTP и стеки FTP, DownloadManager, MediaPlayer) откажутся от приложения просит использовать трафик открытым текстом. Сторонние библиотеки сильно Рекомендуется также соблюдать эту настройку. Основная причина избегать трафик открытого текста - это отсутствие конфиденциальности, подлинности и защита от взлома: сетевой злоумышленник может подслушать переданные данные, а также изменить их, не будучи обнаружены. ссылка

...