我想在shazam中开始搜索Activity。根据this,没有搜索Activity到shazam,只有一个<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 );


等等...

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

最佳答案

ContentProvider不能由Activity之类的意图“启动”。

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

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

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

10-08 12:30