2012-11-26 181 views
2

我從url(我的服務器)下載了apk文件並保存在SD卡中。如果用戶從SD卡安裝它,我想知道,是否有任何通知,該應用程序安裝成功或應用程序已安裝在設備中。是否有任何已安裝的應用程序的回調檢查應用程序安裝在設備的Android代碼

回答

6

試試這個代碼:

protected boolean isAppInstalled(String packageName) { 
     Intent mIntent = getPackageManager().getLaunchIntentForPackage(packageName); 
     if (mIntent != null) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 

得到應用的應用包名稱容易:只搜索您的應用程序在google play website,和那麼你將採用id參數(它是應用程序的包名稱)。例如: 您將在谷歌play上搜索Youtube應用,並且您會在以下URL中找到它:

https://play.google.com/store/apps/details?id=com.google.android.youtube&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nb29nbGUuYW5kcm9pZC55b3V0dWJlIl0

包名是id PARAM,所以它是:com.google.android.youtube

然後當你想測試,你將必須:

String packageName = "com.google.android.youtube"; 
boolean isYoutubeInstalled = isAppInstalled(packageName); 

PLUS:,如果你想獲得在你的設備中的所有安裝的應用程序的列表,你可以找到你的答案在這tutorial

+0

我不知道包名稱,我將從服務器獲取url並將其下載並保存在SD卡中,如何獲取包名稱以檢查 –

+0

請參閱我的編輯:) – Houcine

+0

謝謝,我請求我的服務器url獲取apk ,對於這種情況,如何從apk文件獲取軟件包名稱,如何獲取軟件包名稱? –

1
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
final List pkgAppsList = context.getPackageManager().queryIntentActivities(mainIntent, 0); 

你會得到Android上所有安裝的應用程序的列表。

1

使用此功能來檢查是否安裝了應用程序

PackageManager pm = context.getPackageManager(); 

     List<ApplicationInfo> list = pm.getInstalledApplications(0); 

     for (int i = 0; i < list.size(); i++) {   
      if(list.get(i).packageName.equals("com.my package")){ 
        //do what you want 
        } 

     } 
相關問題