Как открыть браузер и приложение YouTube с заголовком в виде URL в Android с намерением создать Chooser - PullRequest
1 голос
/ 23 марта 2019

enter image description here Я создаю приложение для музыкального проигрывателя Android, в которое я хочу добавить функцию поиска, поэтому мне нужно реализовать это следующим образом:

Я хочу найти песнюНазовите и создайте Chooser для YouTube и всех установленных браузеров с названием песни, а не с URL

. Я думаю, что не могу описать свой вопрос, поэтому, пожалуйста, посмотрите ниже, может быть, это поможет вам понять: -

Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("https://stackoverflow.com/"));
//here i want to set like that intent.setData("my song title")
            startActivity(Intent.createChooser(intent,"search")); 

, но если я делаю это, он показывает мне -НЕТ ПРИЛОЖЕНИЙ МОЖЕТ ВЫПОЛНИТЬ ЭТО ДЕЙСТВИЕ

, поэтому я не знаю, как поставить заголовок как URL в намерении

пожалуйста, помните, этот пользователь также может искать это на YouTube

1 Ответ

1 голос
/ 23 марта 2019

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

Поиск на Youtube

Intent intent = new Intent(Intent.ACTION_SEARCH);
intent.setPackage("com.google.android.youtube");
intent.putExtra(SearchManager.QUERY, "Sunday Bloody Sunday");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Поиск в браузере

Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "Sunday Bloody Sunday");
startActivity(intent);

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

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

Здесьавтоматическое создание поискового запроса для Youtube и браузеров:

private void startSearchIntent(String query) {
    List<Intent> browserIntents = new ArrayList<>();
    // Find browser intents
    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_WEB_SEARCH), 0);

    // Create a search intent for each browser that was found
    for (ResolveInfo info : resInfo) {
        Intent browserIntent = new Intent(Intent.ACTION_WEB_SEARCH);
        browserIntent.putExtra(SearchManager.QUERY, query);
        browserIntent.setPackage(info.activityInfo.packageName.toLowerCase());
        browserIntents.add(browserIntent);
    }

    // Create Youtube Intent
    Intent youtubeIntent = new Intent(Intent.ACTION_SEARCH);
    youtubeIntent.setPackage("com.google.android.youtube");
    youtubeIntent.putExtra(SearchManager.QUERY, query);
    youtubeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    Intent chooserIntent = Intent.createChooser(youtubeIntent, query);
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, browserIntents.toArray(new Parcelable[]{}));
    startActivity(chooserIntent);

}

Тогда вам просто нужно вызвать метод:

startSearchIntent("Sunday Bloody Sunday");

Надеюсь, это поможет.

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