这很奇怪-我正在尝试以编程方式打开另一个应用程序。我找到了我遵循的这个链接:Stackoverflow链接
所以我的代码如下-请注意,它正在对话框中运行。
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_HOME);
intentToResolve.setPackage("com.android.launcher3");
intentToResolve.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ResolveInfo ri = getPackageManager().resolveActivity(intentToResolve, 0);
if (ri != null)
{
Intent intent = new Intent(intentToResolve);
intent.setClassName(ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
如果我在代码中设置了断点,这似乎只会“关闭”我的应用程序并进入主屏幕。如果我让它在没有断点的情况下运行,那么什么也不会发生。
我不知道为什么会这么做?有任何想法吗?谢谢。
编辑:我已经将它发生的视频上传到YouTube,以便您可以确切地看到我的意思。您会看到我第一次运行它时,它会碰到断点,设备会转到主屏幕。第二次运行它删除了断点,但没有任何反应。YouTube连结
如果您设置了一个断点,它将起作用,这似乎表明存在某种时序问题。
您提到您是从一个对话框中运行此代码的,对我来说,这强化了您遇到计时问题的想法。
对话框关闭后,尝试从“活动”中运行此代码。如果这不能解决问题,我会感到非常惊讶。
我假设您正在使用对话框让用户选择要启动的内容。因此,与其尝试从对话框中启动另一个应用程序,不如将该信息传达给它的父活动,并让该活动在对话框关闭后运行此代码。
显示对话框时,您是通过活动进行的-对话框显示在活动的顶部。
您可能正在使用“对话框构建器”来构建对话框,然后调用builder.create()来显示对话框。
在构建器代码中,您可能会执行以下操作:
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK
}
})
在onClick处理程序中,第二个参数是被单击的项目的ID。使用此信息来决定要启动的内容。我建议在Activity中使用一个单独的方法进行启动,然后从onClick处理程序中调用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句