2012-02-05 29 views
2

我有一个Android应用程序,它使用WebView来使用户能够安装应用程序。从历史上看,从Android Market安装的应用程序将安装程序值设置为“com.google.android.feedback”。通过Google Play,此值现在为“com.android.vending”。设置getInstallerPackageName()中返回的“安装程序”包值

这个值可以通过以下方式获得:

PackageManager pm = context.getPackageManager(); 
String installer = pm.getInstallerPackageName(pname); 

在我的WebView安装的应用程序已经设置为null安装程序的价值。我如何设置我自己的安装程序值,如com.mydomain.store

+2

该问题的有趣部分缺失?你为什么要这个? – Peterdk 2012-12-24 23:14:14

回答

3

您可以尝试使用setInstallerPackageName

但是,您必须在安装软件包后设置安装程序软件包名称,并且安装程序软件包名称必须为空/空。

+1

感谢Jakar,事实证明这个函数可用于API Level 11+,而且我正在使用API​​ Level 7。这就是为什么我找不到它。我还发现安装程序应该使用与安装的应用程序相同的密钥进行签名。 – Rami 2012-02-05 20:54:38

4

虽然这并不严格地回答以编程方式执行此操作的问题,但也可以通过adb设置供应商软件包,而无需使用相同密钥对其进行签名。

There's a complete explanation here,但它归结为:

下亚行招设置调试应用程序的安装厂商:

adb push app.apk /sdcard/app.apk 
adb shell pm install -i "com.android.vending" -r /sdcard/app.apk 
adb shell rm /sdcard/app.apk 

要确认此工作过,使用列表中的包包装 经理:

adb shell pm list packages -i [packagename] 

如果一切顺利的话,你应该可以看到这个Ø输出:

package:[packagename] installer=com.android.vending