我的应用程序具有带有前台通知的服务。即使主活动关闭,该服务也会运行。如果我单击通知,我想重新启动主要活动。我所做的似乎是正确的。
更改为 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)。升级是否有可能破坏了功能?知道我还能检查什么吗?