我想制作一个与 Android Beam 功能相似的应用程序,但问题是如何获取那些正在运行的应用程序的内容。例如,如果网络浏览器、Youtube 和谷歌地图正在运行,我如何获取网址、视频链接和位置?谢谢你。
3 回答
如果正在运行的应用程序通过某种全局访问方法(例如服务或内容提供者)提供此类信息,您将只能获得此类信息。任何应用程序都不太可能这样做,因为它具有一些严重的安全/隐私影响。
您只能通过编写系统应用程序来开发这样的应用程序,也就是您需要 root 权限。
我认为最好的方法是查看 Android Beam 源代码,看看它是如何完成的。官方 API 在这里不会为您提供帮助。由于此类系统应用程序中使用的函数不在 API 中,因此无法保证它可以与未来的 Android 版本一起使用,所以要小心。
我怀疑这将是一件容易的事。如果它真的类似于 Android Beam,请尝试在官方源代码之上构建您的代码。
对于 Android Beam,应用程序本身正在共享数据。NFC 后台服务获取要通过 Android Beam 共享的数据,这些数据由应用程序的 Activity 传递给它。Activity 要么在开头(例如在onResume()
)调用方法NfcAdapter.setNdefPushMessage()来共享静态数据,要么调用NfcAdapter.setNdefPushMessageCallback()来注册一个回调,该回调将在 Android Beam 时创建要共享的数据变得活跃。
许多标准的 Android 和 Google 应用程序已在 Android 4.0 ICS 中扩展以支持此功能,例如 Browser、Gmail、Maps、People 和 Youtube。默认情况下,不支持此功能的应用程序将在 Google Play 商店中共享指向该应用程序下载页面的链接。