【发布时间】:2015-08-27 19:47:40
【问题描述】:
我正在开发一个使用包名来启动第三方应用程序的应用程序。我做了一些研究,发现所有应用程序都可以从启动器意图启动。有没有人知道如何通过单击按钮来做到这一点。
【问题讨论】:
-
这不是重复。我问如何启动它,问题是如何找到包名。我已经知道如何找到包名了。
我正在开发一个使用包名来启动第三方应用程序的应用程序。我做了一些研究,发现所有应用程序都可以从启动器意图启动。有没有人知道如何通过单击按钮来做到这一点。
【问题讨论】:
您不能真正“启动应用程序”。如果您知道包名,您可以尝试从 3rd 方应用程序获取 Launch Intent:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.thirdparty.package");
startActivity( intent );
【讨论】:
对于上述接受的答案,如果您的模拟器上没有安装第三方应用程序,您也应该优雅地处理它。 这是相同的完整代码:
public void openThirdPartyApp() {
Intent intent = new Intent("com.thirdparty.package");
intent.setPackage("com.thirdparty.package");
try {
((Activity) context).startActivityForResult(intent, REQUEST_CODE);
} catch (ActivityNotFoundException e) {
downloadIt();
}
}
private void downloadIt() {
Uri uri = Uri.parse("market://search?q=pname:" + "com.thirdparty.package");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
//creates a small window to notify there is no app available
}
}
}
}
【讨论】:
只要把它放在一个 View.OnClickListener 中:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getPackageManager().getLaunchIntentForPackage(theOtherActivityPackage);
startActivity( intent );
}
});
【讨论】: