19

有没有办法将自定义参数传递给 android 市场(或任何其他方式),以便我的应用在安装后接收参数(并首次运行)。

让我解释。

  1. 使用 argument1="Hello world1" 开始一个意图(每次都自定义参数)
  2. 从安卓市场安装应用程序。
  3. 首次打开应用程序。
  4. 应用程序显示消息“Hello world1”

任何情况都可以,不只是打算进入 android 市场。

大多数情况下,应用程序将通过带有绑定 http 模式的条码扫描器安装。因此,浏览器解决方法也是可能的,HTML5 客户端存储,(将参数存储到浏览器并在我的应用程序第一次运行时从那里获取)

更新

一个解决方案是为浏览器创建一个 cookie 或其他东西,然后从我安装的应用程序中访问它。那可能吗?如果是这样,你能提供一些有关这方面的信息吗?浏览器可以与应用程序共享数据吗?

4

3 回答 3

25

您可以发布类似
http://market.android.com/details?id=your.package.name&referrer=your_referrer_parameter
的链接 用户单击此链接并安装应用程序后,您的广播接收器将收到广播 com.android.vending。带有“your_referrer_parameter”值的 INSTALL_REFERRER。

更多信息:
http ://code.google.com/mobile/analytics/docs/android/#android-market-tracking
从 Android Market 安装应用程序后获取引荐来源网址
获取 Android Google Analytics 引荐来源网址标签

于 2011-09-28T01:26:48.953 回答
4

AFAIK 你问的是不可能的。市场只向设备提供 APK 文件。但是,根据您到底想要做什么,可能有许多不同的解决方法。

这里有几个想法:

如果您希望市场为每个用户提供唯一的自定义参数,那么为什么不让您的应用程序在初始运行时连接到服务器并下载该参数呢?即使市场可以提供论据,它也必须从您那里得到它,并且您可能必须设置一个服务器来为市场提供论据。

如果您只是想让应用程序知道它是否第一次运行,您可以使用 SharedPreference 来做到这一点。查询是否存在类似的首选项hasAppRunBefore,如果不存在,则您知道该应用程序自安装以来首次运行。然后将hasAppRunBefore变量设置为某个值,表明它之前已经运行过。此实现将允许用户卸载应用程序并重新安装它,并且在每次重新安装后应用程序将再次运行第一次。

另一种选择是前两者的组合。您可以让应用程序连接到您的服务器并向服务器提供设备的 UUID,然后服务器可以检查它之前是否看到过该 UUID。如果没有,则提供论据,否则不提供。

如果您确实需要每个设备的每个 APK 都不同,您可以设置一个服务器,当收到下载请求时,它会编译一个新的 APK 并提供下载该 APK 的链接。这将允许您为每次下载生成一个新的、唯一的 APK。但是,这需要您自己分发 APK,因为 Android 市场目前不提供此功能。

于 2011-09-27T16:12:47.100 回答
1

我会继续让重定向到市场的网站也将文件推送给客户端。该文件可以命名为“yourapp.info”,并包含您需要的数据。一旦您的应用程序启动,它可以搜索 SD 卡(它应该位于几个众所周知的目录中,即 /sdcard/Downloads )并读取该文件。SD卡没有访问限制。

关于浏览器中的 Cookie:我不确定您是否可以从任何其他应用程序访问 cookie -(请查看:blog.watchfire.com/files/advisory-android-browser.pdf - 无法访问cookies)所以我认为这条路线将被关闭。

于 2011-09-27T16:27:54.990 回答