设置getInstallerPackageName()中返回的"installer"包值

Ram*_*ami 5 android android-install-apk

我有一个Android应用程序,它使用WebView使用户能够安装应用程序.从历史上看,从Android电子市场安装的应用程序将安装程序值设置为"com.google.android.feedback".使用Google Play,此值现在为"com.android.vending".

该值可通过以下方式获得:

PackageManager pm = context.getPackageManager();
String installer = pm.getInstallerPackageName(pname);
Run Code Online (Sandbox Code Playgroud)

我的WebView安装的应用程序的安装程序值设置为null.如何设置自己的安装程序值,例如com.mydomain.store

Pau*_*sma 9

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

这里有一个完整的解释,但它归结为:

以下adb技巧设置调试应用程序的安装供应商:

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
Run Code Online (Sandbox Code Playgroud)

要确认这是否有效,请使用程序包管理器列出程序包:

adb shell pm list packages -i [packagename]
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,你应该看到这个输出:

package:[packagename]  installer=com.android.vending
Run Code Online (Sandbox Code Playgroud)


Ree*_*eed 5

你可以尝试使用setInstallerPackageName.

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

  • 谢谢 Jakar,原来这个函数适用于 API Level 11+,而我使用的是 API Level 7。这就是为什么我找不到它。我还发现安装程序应用程序应该使用与已安装应用程序相同的密钥进行签名。 (2认同)