如何启动<provider>标记(启动Shazam搜索活动)

时间:2016-04-25 11:42:53

标签: java android android-intent android-contentprovider shazam

我想在shazam中开始搜索Activity。根据{{​​3}},shazam没有搜索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 );

等等......

我还检查了这些帖子this post 1 。但没有发现任何帮助。

1 个答案:

答案 0 :(得分:2)

ContentProvider无法像Activity这样的意图“启动”。

提供程序是一个组件,旨在为某些数据提供接口。 ContentResolver可以访问数据。

某些ContentProvider也允许从其他应用访问。这通常记录在某处,提供访问数据所需的URL和有关数据本身的详细信息。这样的示例是“联系人”提供程序,用于访问存储在设备上的所有联系人信息。

根据您尝试访问的所提供的清单声明的外观来判断,我认为它只能由Shazam应用程序本身访问,因此无法访问它提供的数据。