在我的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