【问题标题】:Android: How can I save something in the browser that all apps can access?Android:如何在浏览器中保存所有应用程序都可以访问的内容?
【发布时间】:2011-08-24 09:49:07
【问题描述】:

所需的基本功能

当 Android 手机上的用户访问 URL http://www.example.com?key=asdf 时,我希望将值 asdf 保存为手机上的任何应用程序都可以在以后访问它。

最终目标

目标是通过将朋友定向到 URL 来邀请他们加入应用的简单方法。该 URL 有一个从市场下载我的应用程序的链接,因此接受邀请唯一需要做的就是访问该 URL 并单击一个链接。一旦您安装了该应用程序,它就可以获取值 asdf 并将您与邀请您的人联系起来。

我尝试过的事情

我最初的想法是使用 localStorage 或 cookie 之类的东西,但出于安全考虑,似乎不太可能存在涉及其中任何一个的解决方案。

到目前为止,我想出的最佳解决方案是使用com.android.browser.permission.READ_HISTORY_BOOKMARKS 权限来阅读用户的历史记录,以从我的域中搜索 URL。这是一个很好的解决方案,但它不适用于移动 Firefox 等其他浏览器。此外,它需要一个不正当的许可,我想尽可能避免。

【问题讨论】:

  • 恕我直言,如果用户从应用市场下载您的应用,他们的朋友只需告诉他们一个简单的键即可进入应用,这样会更容易。您甚至可以将密钥作为 URL 通过电子邮件发送,这可以通过意图过滤器启动您的应用程序。
  • 目前我们正在使用您建议的双链接方法,其中一个链接是市场,第二个链接是启动应用程序并接受邀请。不幸的是,很多人忘记返回并点击第二个链接。

标签: android browser cookies local-storage


【解决方案1】:

要实现您的实际目标,您可以使用与 Google Analytics(分析)相同的方法。 基本思想是,您使用指向应用商店的 URL 并带有特定格式的引荐来源网址值,该引荐来源网址值会传递给应用程序。虽然该字符串的格式应该可以是任何格式,但如果您不遵循实际的 Google Analytics 格式,就会出现问题报告。

示例:

http://market.android.com/details?id=com.example.myapp&referrer=utm_source%3Dfriend%26utm_medium%3Dinvite%26utm_content%3Dasdf%26utm_campaign%3Dinvite

更多关于分析的文档可以在Android Google Analytics找到

然后您需要为 com.android.vending.INSTALL_REFERRER 类型实现广播接收器

在您的清单中,它将如下所示:

<!-- Used for install referrer tracking -->
<receiver android:name=".MyReceiverClass" android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>

有关实现BroadcastReceiver 的详细信息,请参阅 Android 文档。

这种方法要求朋友使用设备上的 Google Marketplace(通过单击生成的 URL)下载应用,因为 MarketPlace 应用会获取引荐来源数据并将其传递给应用。

注意:虽然该方法应该可行,但当前 MarketPlace 应用程序可能存在问题,导致该方法无法正常工作。见错误:http://code.google.com/p/android/issues/detail?id=19247

【讨论】:

  • 惊人的答案。非常感谢!
  • 不错的编辑!自从您在 8 月写下这个答案以来,我一直非常感兴趣地关注这个错误。
【解决方案2】:

抱歉,没有支持的方式来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2017-10-21
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多