与Market应用程序的交互导致窗口焦点错误

时间:2011-08-22 14:23:58

标签: android android-intent google-play

我有一个奇怪的问题,我想从我的应用程序启动到市场 - 我正在做以下事情。

 Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
             "market://details?id=" + activity.getPackageName()));

    try {
        activity.startActivity(marketIntent);
    } catch (ActivityNotFoundException e) {
        Toast.makeText(activity, "Could not launch market", Toast.LENGTH_LONG).show();
    }

然而,当用户可以再次按Open时,当他们这样做时,我得到:

08-22 15:18:37.510: INFO/ActivityManager(260): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.xyz.appname cmp=com.xyz.appname/.mainapp } from pid 22853
08-22 15:18:37.590: INFO/ActivityManager(260): Starting: Intent { cmp=com.xyz.appname/.secondactivity } from pid 25735
08-22 15:18:37.590: WARN/InputManagerService(260): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@2b49a938

它永远不会重新打开应用程序,它们只是停留在那里 - 回击确实有效。 跟踪代码警告来自mainapp

Intent tabActivity = new Intent();
    tabActivity.setClass(this, secondactivity.class);
startActivity(tabActivity);
this.finish();  

1 个答案:

答案 0 :(得分:0)

这绝对看起来像是重新启动的问题 - 你在最后一段代码的正确轨道上。

这个标志看起来像你需要告诉Android从历史堆栈中拉出现有活动并重新使用它:

FLAG_ACTIVITY_SINGLE_TOP

或者(如果你想重新启动而不是恢复),也许你可以提示Android在你继续之后回收活动,通过你的意图使用它:

intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);