从小部件活动启动的活动在Nougat中没有响应

时间:2016-12-01 00:07:39

标签: android android-intent android-activity

点击我的窗口小部件(或关联的通知)后,PendingIntent会启动一项活动,该活动会显示与窗口小部件相关的项目列表。如果轻触其中一个列表项,则窗口小部件活动将使用标准操作意图启动我的主要活动。然后,主要活动显示有关所选项目的详细信息。

这一切都完全通过Android 6.x Marshmallow完成,但在Android 7(Nougat)上,已启动的主要活动在视图中显示正确的数据,但整个用户界面完全没有响应。按钮,滚动,查看滑动:它们都没有做任何事情!唯一能做出响应的是系统返回按钮,它会按预期将您带回到窗口小部件活动的列表中。

Nougat会发生什么变化?我的构建目标是23.启动主要活动的所有其他方式都可以正常工作,并且所有内容仍适用于早期的Android版本。以下是启动主要活动的代码:

        String uri = "file://" + mPrefs.getDbPath();
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(uri), "application/octet-stream");
        int indId = otdEvt.mId[0] > 0 ? otdEvt.mId[0] : otdEvt.mId[1];
        intent.putExtra(EXTRA_LAUNCH_ID, indId);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            startActivity(intent);
        }
        catch (ActivityNotFoundException e) {
            Toast.makeText(mCtx, getString(R.string.launch_err), Toast.LENGTH_SHORT).show();
        }

无论是否有FLAG_ACTIVITY_NEW_TASK都没有区别。

新信息:如果我还包含FLAG_ACTIVITY_CLEAR_TASK,则已启动的主要活动将按预期工作。但是,这不是一个可接受的解决方案,因为按“返回”按钮会将一个返回到主屏幕 - 而不是显示项目列表的窗口小部件活动。我还将我的构建目标和库更新到24级,这是我的设备运行的。

1 个答案:

答案 0 :(得分:0)

Mea culpa。在彻底(耗尽)调试之后,我找到了我的错误。这里很难解释,但是我在Android 2.3天试图进行"优化"无论如何,我打破了一些常识规则,采取了一些捷径,并且已经侥幸逃脱了几年。它很容易修复,现在所有设备都在我的设备和报告相同问题的客户的设备上工作。