在我的Android应用程序中,我想检查应用程序安装的来源。 我看着Android文档,发现下面的API为PackageManager类的一部分:getInstallerPackageName返回null
abstract String getInstallerPackageName(String packageName)
检索安装包中的应用程序的包名。
然后我用下面的代码在MyActivity的onCreate
方法:
if(Build.VERSION.SDK_INT >= 11)
{
PackageManager myapp= this.getPackageManager();
String installer = myapp.getInstallerPackageName("com.MyPackage");
if(installer == null)
{
Toast.makeText(getApplicationContext(), MyActivity.this.getString(R.string.invalidsource), Toast.LENGTH_SHORT).show();
MyActivity.this.finish();
}
}
但是看起来这个API在真实设备上返回null
。
请让我知道,如果我们有任何其他方式获取应用程序安装的来源。
另一种可能的方式是使用“setInstallerPackageName”,对不对?这里有一个链接:http://developer.android.com/reference/android/content/pm/PackageManager.html#setInstallerPackageName(java.lang.String,java.lang.String)。我想知道需要哪个权限。 –
要注意您提到的方法说_“如果installerPackageName没有使用与调用应用程序相同的证书进行签名,将会抛出SecurityException。”_即,您无法假装已从GooglePlay安装应用程序 – Dori