2016-02-17 35 views
0

我正在尋找使用PackageManager來調用第三方應用程序的可能性。主要的問題是,我的方法callApp實現了另一個不可訪問的解決方案的接口。我只收到沒有包裝信息的參數appName在不同的項目中獲取包含appname的包

當初始化Intent時,我必須手動添加我的包路徑(這裏是:com.example)。

我想實現的是,Android會查找與該名稱匹配的包的全名。由於此方法是另一個項目的一部分,因此我不能使用getApplicationContext().getPackageName();或類似方法。有任何想法嗎?

public void callApp(int methodIndicator, String appName, String command, Map<String, String> args) { 
    PackageManager pm = context.getPackageManager(); 

    // < Should only be the name 
    Intent launchIntent = pm.getLaunchIntentForPackage("com.example."+appName); 
    launchIntent.putExtra("method", methodIndicator); 
    launchIntent.putExtra("command", command); 
    launchIntent.putExtra("args", new HashMap<String, String>(args)); 
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    context.startActivity(launchIntent); 
} 

回答

2

您可以迭代並嘗試獲取像這樣的appNam。

final PackageManager pm = getPackageManager(); 
//get a list of installed apps. 
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 

for (ApplicationInfo packageInfo : packages) { 
    if(applicationInfo.loadLabel(pm).toString().equalsIgnoreCase(appName){ 
     string packageName = packageInfo.packageName; 
    } 
    Log.d(TAG, "Installed package :" + packageInfo.packageName); 
    Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
} 
// the getLaunchIntentForPackage returns an intent that you can use with startActivity() 
1

爲了得到一個設備上安裝的應用程序的列表,你可以使用下面的代碼:

PackageManager pm = context.getPackageManager(); 
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> pgList = pm.queryIntentActivities(mainIntent, 0); 

for (ResolveInfo rInfo : pgList) { 
    // do your stuff 
} 

ResolveInfo對象給出了通過以下存取訪問這兩個名稱和包:

rInfo.activityInfo.packageName // the application package 
rInfo.activityInfo.loadLabel(pm).toString() // the application name as displayed in launcher 

從那裏你可以尋找你的appName並獲得相關的包。

希望有所幫助。