java - 如何启动 <provider/> 标签(启动 Shazam 搜索 Activity )

标签 java android android-intent android-contentprovider 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 等 Intent “启动”。

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

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

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

关于java - 如何启动 <provider/> 标签(启动 Shazam 搜索 Activity ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36839571/

相关文章:

android-intent - 以编程方式设置或查看 "Advanced Wi-fi"设置

java - 如何摆脱java中对象的实例?

java - getClass().getClassLoader().getResource() 在 OC4J App Server 中不起作用

java - 如何在 UTC 中倒计时到毫秒

java - 仅当满足以下条件时,区域设置才被视为完整

android - 进程 'command ' git'完成,退出值非零1

android - 如何在android上找到apk路径?

android - 加速度计校准

java - 即使数据通过,Android Intent 也是空的

android - 在没有消息的情况下启动默认 SMS 应用程序