Intereting Posts
Как вы визуализируете текст в файле xml-файла на уровне android? Android MediaPlayer мерцает при воспроизведении видео на Android 4.2.2 Gradle: Как отобразить результаты androidTest в консоли? Шифрование AES: InvalidKeyException: длина ключа не 128/192/256 бит Правильный способ обработки предупреждения NullPointerException от Android Studio Ошибка: невозможно создать экземпляр FMOD :: Sound для ресурса sharedassets0.resource при разбиении двоичного кода приложения в Unity Как достичь наилучшей производительности с помощью SQLite в Android? OnCreateView () вызывается слишком часто в пользовательских предпочтениях Google Maps V2 – Android – Получить текущий уровень масштабирования Пользовательский XML-парсер Android не разрешает пространство имен android Как сделать заголовок панели инструментов кликабельным точно так же, как на ActionBar, не устанавливая его как ActionBar? Ошибка при записи файлов с Android Storage Access на Lollipop Пользовательский агент Android HTTP Управление строками и памятью Является ли Sun Java действительно необходимым для использования Android SDK на Ubuntu 10.10? Я предпочитаю OpenJDK

Хост схемы не работает на android lollipop, нажмите на ссылку, чтобы открыть приложение

Я использую этот кусок кода для запуска своего приложения из ссылки.

<activity android:name="com.example.myApp.myClass" android:label="@string/app_name" > <intent-filter> <data android:host="customHostName" android:scheme="customScheme" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

Это ссылка href, я хочу получить ключ в конце.

 customScheme://customHost/49FYTJTF00 

Он отлично работает на всех предыдущих версиях Android, но не работает на Lollipop.
Когда я нажимаю ссылку, она показывает только список браузеров для запуска.

Что мне делать?

Solutions Collecting From Web of "Хост схемы не работает на android lollipop, нажмите на ссылку, чтобы открыть приложение"

Редактировать:

После тестирования и тестирования я обнаружил, что если ваша схема содержит символ верхнего регистра, браузер не сможет ее запустить. Ваша схема должна содержать только строчные символы!

Также обратите внимание, что ошибка 459156 проекта chromium по-прежнему не позволяет запускать url напрямую, вы должны ссылаться на веб-страницу, содержащую этот код JavaScript:

 <!DOCTYPE html> <html> <body> <script language="javascript"> window.location = 'customscheme://customHost/49FYTJTF00'; </script> </body> </html> 

Пользователям, приземляющимся на этой странице, автоматически будет предложено либо диалоговое окно выбора действий, либо непосредственно отправить на свою активность.

Чтобы попробовать это, откройте браузер Android, перейдите к URL-адресу ниже и скопируйте этот фрагмент в редакторе выше: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro

Gif, показывающий браузер + JavaScript, открывающий активность

Gif

Оригинальное сообщение

Я опробовал ваш пользовательский URI, и он работает на Android 5.0

Но вы должны знать о следующих двух ошибках / проблемах:

  1. Ошибка 459156 проекта Chromium. Это означает, что запуск пользовательских схем из браузера Android не работает, если URL-адрес не применяется с использованием JavaScript. Обходной путь см. В этой статье StackOverflow: OAuth и пользовательская схема приводят к «ERR_UNKNOWN_URL_SCHEME» в Chrome
  2. Ошибка 80971: URI с пользовательской схемой не может быть нажата в SMS-тексте (Linkify?)

Мой подход

Я создал два отдельных упражнения, один из них как приемник намерений, а другой – как пусковую установку. В запуске действует EditText, где может быть введен полный URI и кнопка для запуска введенного URI.

Main.java onClick (Запуск активности)

 @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(input.getText().toString())); try { startActivity(intent); } catch(ActivityNotFoundException e){ Toast.makeText(this, "Auww!! No Activity can open this URI!", Toast.LENGTH_SHORT).show(); } } 

Manifest.xml (только действия)

Обратите внимание на <data android:pathPattern=".*"/> Часть. Эта часть важна, поэтому все, что принимается хостом, будет считаться действительным.

 <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".UriActivity" android:label="@string/app_name"> <!-- This intent-filter will open any URI with the following forms: customscheme://customHost/49FYTJTF00 customscheme://customHost https://www.google.com/something/something http://www.google.com/ http://google.com/something --> <intent-filter> <data android:scheme="https"/> <data android:scheme="http"/> <data android:host="google.com"/> <data android:host="www.google.com"/> <data android:scheme="customscheme"/> <data android:host="customHost"/> <data android:pathPattern=".*"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity> 

UriActivity.java (Получение активности)

 public class UriActivity extends ActionBarActivity { private TextView tvText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_uri); tvText = (TextView) findViewById(R.id.text); setTextFromIntent(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setTextFromIntent(); } private void setTextFromIntent(){ StringBuilder text = new StringBuilder(); Uri data = getIntent().getData(); if(data != null){ text.append("Path:\n"); text.append(data.getPath()); text.append("\n\nScheme:\n"); text.append(data.getScheme()); text.append("\n\nHost:\n"); text.append(data.getHost()); text.append("\n\nPath segments:\n"); text.append(Arrays.toString(data.getPathSegments().toArray())); } else { text.append("Uri is null"); } tvText.setText(text); } } 

Скриншот:

Результат отправки пользовательского намерения в UriActivity

Загрузка тестового проекта:

Я сделал загрузку для проекта, если вы не попробуете сами.

Вместо того, чтобы использовать ссылку на customScheme: // customHost / 49FYTJTF00, вы пробовали использовать ссылку типа

 <a href="intent://customHostName/49FYTJTF00#Intent;scheme=customScheme;end"> 

Chrome должен иметь возможность открыть это приложение просто отлично. В то же время это может не работать во всех браузерах.

Вы написали:

  <data android:host="customHostName" android:scheme="customScheme" /> 

Итак, используйте customScheme://customHostName/49FYTJTF00
Вместо customScheme://customHost/49FYTJTF00

Имейте в виду, что если вы хотите запустить приложение из Google Chrome, вы должны сделать это по- другому .

Используйте pathprefix.

  android:pathPrefix="/" 

Это может решить вашу проблему. Пожалуйста, следуйте URL-адресу разработчика .