首页 > 解决方案 > 从通知开始主要活动失败

问题描述

我的应用程序具有前台通知服务。即使主要活动关闭,该服务也会运行。如果我单击通知,我想重新启动主要活动。我所做的似乎是正确的。

AndroidManifest.xml的更改:

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

在通知中设置待处理的意图:

    Intent activityIntent = new Intent(this, Muzika.class);
    activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder mNotifyBuilder  = new NotificationCompat.Builder(this, CHANNEL_ID)
        .setContentIntent(pendingIntent)

如果我单击通知,则会显示我的应用程序的初始屏幕,但仅此而已。它在这里冻结,不会启动。

在 AndroidManifest.xml 中,我定义了另一个 inten-filter 来从文件管理器打开音乐文件。它的行为与单击通知时完全相同。如果应用程序完全关闭或主要活动正在运行,则一切正常。如果只有服务正在运行,则会显示主要活动的初始屏幕,然后冻结。

在控制台(使用 logcat)我只能看到这个:

09-20 14:02:31.898   951  2149 I ActivityManager: START u0 {act=android.intent.action.VIEW dat=file:///storage/6D83-F513/Audio/AC-DC/T.N.T..mp3 typ=audio/mpeg flg=0x10000000 cmp=cz.jech.muzika/.Muzika} from uid 10406
09-20 14:03:32.836   951  1060 W ActivityManager: Activity pause timeout for ActivityRecord{34b1a98 u0 cz.jech.muzika/.Muzika t1958}
09-20 14:03:42.849   951  1060 W ActivityManager: Activity stop timeout for ActivityRecord{34b1a98 u0 cz.jech.muzika/.Muzika t1958}

即使是为了打开音乐文件,也会调用该应用程序。但随后它停止了。未调用onCreate函数。我有一个 Log 命令作为此函数中的第一个命令,控制台输出中没有任何内容。

更让我困扰的是它曾经有效。我恢复到它曾经工作的版本,但它没有帮助。从那以后,我将手机上的开发工具 SDK 升级到了 Android 8 (Oreo)。升级是否有可能破坏了功能?知道我还能检查什么吗?

标签: androidandroid-intentandroid-notifications

解决方案


推荐阅读