2014-02-21 174 views
0

的應用程序,我知道有很多類似的帖子像呼叫從活動

這樣的:Launch an application from another application on Android

這:Launch Activity from another Application Android

但他們沒有滿足我的問題。

背景:

我工作的一個應用程序,我需要調用已安裝在我的手機應用程序。如Astro Filemanager

我的問題是:

我怎麼能說是安裝在我的手機從我的活動,牢記一個應用程序,我沒有包名,我只有應用程序的名稱。

我可以做到這一點嗎?

If yes then how? 

if not then why? 

我知道,我可以用包名調用其他應用程序,但對我來說我沒有包名,我只有可用的應用程序名稱

另一個場景

我可以將應用程序的.apk文件保存在我的項目文件夾中並從那裏調用該apk?

+1

Android有一些稱爲Intents的東西來實現這一點。 – Triode

+0

我已經提到過它。請完整閱讀該問題。我已經提到,我一直在嘗試使用意圖,但傳遞應用程序名稱將不會執行任何操作 –

+0

您希望啓動的應用程序每次都是相同的嗎?如果是這種情況,有辦法得到包名.. – Dage

回答

2

我寫了一個方法,它返回所有已安裝的應用程序及其包名和顯示名稱。

public static List<PInfo> getInstalledApps(Context context) { 
    List<PInfo> result = new ArrayList<PInfo>();   
    List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(0); 

    for(int i=0;i<packs.size();i++) {   
     PackageInfo p = packs.get(i); 
     PInfo fileInfo = new PInfo(); 
     fileInfo.appname = p.applicationInfo.loadLabel(context.getPackageManager()).toString(); 
     fileInfo.pname = p.packageName; 
     fileInfo.versionName = p.versionName; 
     fileInfo.versionCode = p.versionCode; 
     fileInfo.icon = p.applicationInfo.loadIcon(context.getPackageManager()); 
     result.add(fileInfo); 
    } 
    return result; 
} 

也許你可以通過顯示名稱來搜索包名,並用該包名創建一個意圖。

+0

它很容易使用默認下午應用程序來做到這一點。 –

0

如果你需要開始天文文件管理器選擇一個文件,那麼你可以,如果有是有默認值GET_CONTENt你不會看到一個選擇器的應用程序啓動

final Intent getContent = new Intent(Intent.ACTION_GET_CONTENT); 
//check if there are any app to handle. If not, you must not call startActivity. 
if (!getPackageManager.queryIntentActivities(getContent, 0).isEmpty()) { 
    startActivity(new Intent(Intent.ACTION_GET_CONTENT)); 
} 

注意。您可以強制選擇器創建一個選擇器意圖

startActivity(Intent.createChooser(new Intent(Intent.ACTION_GET_CONTENT), "Pick an app")); 

不要忘記檢查,如果queryIntentActivities不爲空b

如果你只是想明確地開始天文,你必須使用它的包名

startActivity(getPackageManager().getLaunchIntentForPackage(ASTRO_PACKAGE)); 

哪裏ASTRO_PACKAGE可以發現

adb shell pm list packages astro 

如果

  • 亞行外殼在亞行外殼開始下一個命令
  • 下午啓動包管理器應用程序
  • 名單套餐包經理命令
  • 天文是一個濾波器參數list packages command