2017-04-04 170 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它。順便說一句你的回答是不正確的我不想啓動一個應用程序,我只是想檢查應用程序是否安裝。 –

相關問題