Size: a a a

StartAndroid Ru Chat

2021 May 24

А

Александр in StartAndroid Ru Chat
Не подскажите, где могу их найти?)
источник

Ф

Фёдор in StartAndroid Ru Chat
источник

А

Александр in StartAndroid Ru Chat
спасибо
источник

V

Vladushka in StartAndroid Ru Chat
Logcat внизу
источник

СК

Саша Козловский... in StartAndroid Ru Chat
Всех приветствую. Хочу при клике на ссылку в webview открыть её,если это возможно,в приложение ютуб. Но метод packageManager.queryIntentActivities возвращает пустой список в android 11. В манифесте после имени пакета и перед uses-permission я пытаюсь использовать код:
   <queries>
       <intent>
           <action android:name="android.intent.action.VIEW" />
<data android:scheme="http"/>
       </intent>
       <intent>
           <action android:name="android.intent.action.VIEW" />
           <data android:scheme="https"/>
       </intent>
   </queries>
Но у меня почему-то это не работает. Подскажите пожалуйста,как сделать,чтобы это работало на android 11?
источник

I

Ivan in StartAndroid Ru Chat
нужно в манифесте прописать package name ютуба явно
источник

СК

Саша Козловский... in StartAndroid Ru Chat
Где именно? А если я,к примеру,захочу не только через ютуб ссылки открывать?
источник

I

Ivan in StartAndroid Ru Chat
а, стоп, это нужно прописать если ты в коде пытаешься зарезолвить именно package name ютуба
источник

I

Ivan in StartAndroid Ru Chat
у тебя как код выглядит?
источник

I

Ivan in StartAndroid Ru Chat
а нельзя просто интент открыть неявный? Без queryIntentActivities, чтоб система сама решала, в каком приложении его обработать. И сделать startActivity. Что будет тогда?
источник

СК

Саша Козловский... in StartAndroid Ru Chat
Просто я хочу явно на 100% открыть его через ютубовское приложение. Касаемо кода,он такой:
           mText.webViewClient = object : WebViewClient() {
               override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
                   val i:Intent= Intent(Intent.ACTION_VIEW,Uri.parse(url))
                   val infos=packageManager.queryIntentActivities(i,0)
                   for (info in infos)
   if("com.google.android.youtube".equals(info!!.activityInfo!!.packageName)) {
i.package=info.activityInfo.packageName
       startActivity(i)
       return true
   }
                 
return false
               }
           }
источник

СК

Саша Козловский... in StartAndroid Ru Chat
При этом на десятке всё работало.
источник

I

Ivan in StartAndroid Ru Chat
грубо говоря, ты своим кодом пытаешься выяснить, установлен ли у юзера ютуб. На Android 11 это запретили сделать, но система даст тебе эту инфу если ты пропишешь com.google.android.youtube у себя в манифесте
источник

I

Ivan in StartAndroid Ru Chat
это сделали чтоб нельзя было просто так считать список установленных приложений у пользователя
источник

I

Ivan in StartAndroid Ru Chat
либо тебе нужно открывать неявно (но ты не знаешь будет это ютуб или нет), либо прописать com.google.android.youtube у себя в манифесте
источник

I

Ivan in StartAndroid Ru Chat
https://proandroiddev.com/how-to-get-users-installed-apps-in-android-11-b4a4d2754286

тут написано про это в разделе Query specific packages
источник

I

Ivan in StartAndroid Ru Chat
попробуй добавить в манифест к себе то что в статье описано в разделе "Query specific packages", указав package ютуба
источник

I

Ivan in StartAndroid Ru Chat
общая идея - если твоё приложение хочет знать, установлено то или иное приложение у пользователя, то оно должно явно прописать в манифесте package name этого приложения.

Либо прописать android.permission.QUERY_ALL_PACKAGES, но гугл за это спросит будь здоров.
источник

СК

Саша Козловский... in StartAndroid Ru Chat
Огромное Вам спасибо. Я указал имя пакета в quiries и всё заработало.
источник

СК

Саша Козловский... in StartAndroid Ru Chat
Всех приветствую. Как-то я писал,что при попытке загрузить файл у одного из пользователей выходит exception:
java.lang.SecurityException: No permission to write to /storage/emulated/0/Download/priroda-ochistilas.jpg: Neither user 10251 nor current process has android.permission.WRITE_EXTERNAL_STORAGE.
Как оказалось по коду,exception выходит,даже если permission granted и он есть в манифесте. Я загружаю файл так:
                           val request: DownloadManager.Request = DownloadManager.Request(uri)
                           request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,uri.lastPathSegment)
                           loadIds[index] = dM.enqueue(request)
Самое интересное,что у меня на android 11,как и раньше на android 10 всё нормально работает. Подскажите пожалуйста,в чём может быть дело?
источник