如何检查已安装的应用程序是我的?

And*_*kov 3 android

我想发布一个捐赠刺激应用程序(如Minimalistic Text所做).据我所知,我可以在我的主要免费应用程序中检查这个捐赠应用程序是通过PackageManager安装的:

try
{
   ApplicationInfo info = getPackageManager()
                         .getApplicationInfo("com.myproject", 0 );
   //-- application exists
} catch(PackageManager.NameNotFoundException e) {
   //-- application doesn't exist
}
Run Code Online (Sandbox Code Playgroud)

但实际上任何人都可以使用相同的包名提供自己的免费应用程序.我怎样才能收到的证据表明,这个应用程序是真正的我的

Nik*_*kov 5

如果您使用相同的密钥/证书对两个应用进行签名,则可以检查签名匹配.假设只有您可以访问私钥,如果它们匹配,则它是您自己的应用程序.就像是:

String myPackageName = application.getPackageName();
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo("com.myproject", 0);
boolean isMine = pm.checkSignatures(myPackageName, pi.packageName) == PackageManager.SIGNATURE_MATCH;
Run Code Online (Sandbox Code Playgroud)