从通知开始主要活动失败

时间:2018-09-20 12:23:19

标签: android android-intent android-notifications

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

更改为 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过滤器,用于从文件管理器中打开音乐文件。它的行为与单击通知时的行为完全相同。如果应用程序完全关闭或主要活动正在运行,则一切正常。如果仅该服务正在运行,则会显示主要活动的初始屏幕,然后冻结。

在控制台中(使用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)。升级是否有可能破坏了功能?知道我还能检查什么吗?

0 个答案:

没有答案