Как запустить тег <provider /> (Запуск поисковой активности Shazam)

Я хочу начать поиск Activity в шазам. По этому нет поиска Activity к шазам, только <provider> тег.

<provider android:name="com.shazam.android.SearchProvider" android:authorities="shazamSearchEncore" android:syncable="false" />

Я пытался запустить его по-разному, но потому что это не Activity это не удалось. Так как мне начать поиск shazam? Или я что-то упустил в этом manifest XML-файл?

Мои попытки:

1:

 Intent intent = new Intent("com.shazam.android.SearchProvider");
 intent.putExtra("query",query);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 this.context.startActivity(intent);

2:

  final Intent shazamIntent = new Intent(Intent.ACTION_SEARCH);
  shazamIntent.setPackage("com.shazam.android.SearchProvider");
  shazamIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  this.context.startActivity(shazamIntent );

И так далее...

Также я проверил эти пост пост 1 и пост 2. Но ничего полезного не нашел.

1 ответ

Решение

ContentProvider не может быть "запущен" намерениями как Activity,

Поставщик - это компонент, предназначенный для предоставления интерфейса для некоторых данных. Данные могут быть доступны ContentResolver,

Немного ContentProviders также позволяют доступ из других приложений. Обычно это где-то документируется, предоставляя URL-адрес, необходимый для доступа к данным, и подробную информацию о самих данных. Таким примером является поставщик контактов, который используется для доступа ко всей контактной информации, хранящейся на устройстве.

Судя по виду декларации манифеста при условии, что вы пытаетесь получить доступ, я думаю, что к нему могут получить доступ только сами приложения Shazam, поэтому нет никакого доступа к данным, которые он предоставляет.

Другие вопросы по тегам