我正在寻找使用PackageManager
调用第3方应用程序的可能性。主要问题是,我的方法 callApp 实现了另一个解决方案的接口(interface),该接口(interface)无法访问。我只收到参数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);
}
最佳答案
为了获取设备上已安装应用程序的列表,您可以使用以下代码:
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 并获取相关的包。
希望有帮助。
关于java - 获取不同项目中具有应用程序名称的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35454411/