2017-04-04 92 views
-2

如何检查,如果应用程序是以前安装或没有?我知道我可以在首次安装时搜索包管理器类,但是可以通过卸载并重新安装应用程序来重置此方法返回的值。我在谈论的应用程序不是我的例如,如果我想检查亚马逊以前安装或不在移动那么如何做到这一点?我搜索了StackOverflow,但没有为我工作。如何检查应用程序之前已安装或不

+0

我敢肯定,这是不可能的。你不应该访问他曾经安装过的应用程序的信息。 –

+0

@VladMatvienko我解决了它:) –

回答

0

没有通用的方法来检查安装在设备上的应用程序是否为(出于安全原因,您可以想象)。

但是,如果你的目标是为特定的应用程序,你可以试着来分析,如果有对SD卡的例子应用程序的访问剩菜。然后,如果应用程序已安装,您的应用程序可以根据该文件的存在性进行检查。

如果您想知道您的某个自己的应用程序是否已安装在设备上。你可以使用SD卡方式,并写入一个文件到SD卡,并与其他应用程序一起阅读。

+0

我明白了,谢谢兄弟。我可以检查最后修改的文件夹,然后如果用户从我的应用程序再次安装它,我可以再次检查最后修改的值是否可用,这意味着应用程序先前已安装,然后值将再次更改:D。我对吗? :D –

+0

@AmitKhatkar我认为是的,如果你想检查你自己的应用程序是否已安装,这很容易。但是,如果您无法控制要检查的应用程序,则很有可能没有在SD卡上留下任何遗漏。 – IIIIIIIIIIIIIIIIIIIIII

+0

如果已安装的应用程序将返回否则首次安装时,它将返回0:d 'PackageInfo信息= NULL; long firstInstallTime = 0; 尝试info = getPackageManager()。getPackageInfo(package,0); firstInstallTime = info.firstInstallTime; }赶上(PackageManager.NameNotFoundException E){e.printStackTrace (); (“firstinstall”,String.valueOf(firstInstallTime));' –

-1

可以实现对SD卡使用这个文件写:

File f = new File("path of your file & sdcard location"); 
    if (f.isDirectory()) { 
     // Already installed your application get the file 

    }else{ 
     // First time installed write a file here 
     f.mkdir(); 
    } 
+0

如果用户将清除那里的垃圾文件,那么这个文件将会丢失。所以以后你不能抓住这个文件!.. –

+0

你的文件路径应该是SD卡,而不是在应用程序缓存目录或getFilesDir(),它可以卸载应用程序之后被去除,它应该是一个永久存储特定的位置。 –

1

尝试,这可能是它的帮助

,我们要检查 布尔isAppInstalled = appInstalledOrNot(“//使用包名COM .check.application“);

if(isAppInstalled) { 
     //This intent will help you to launch if the package is already installed 
     Intent LaunchIntent = getPackageManager() 
      .getLaunchIntentForPackage("com.check.application"); 
     startActivity(LaunchIntent); 

     Log.i("Application is already installed.");  
    } else { 
     // Do whatever we want to do if application not installed 
     // For example, Redirect to play store 

     Log.i("Application is not currently installed."); 
    } 
} 

private boolean appInstalledOrNot(String uri) { 
    PackageManager pm = getPackageManager(); 
    try { 
     pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); 
     return true; 
    } catch (PackageManager.NameNotFoundException e) { 
    } 

    return false; 
} 
+0

soved它。顺便说一句你的回答是不正确的我不想启动一个应用程序,我只是想检查应用程序是否安装。 –

相关问题