我的应用程序具有服务和活动。在该服务中,使用以下代码调用活动:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
即使没有标志,活动窗口也通常以正确的布局显示。但是,在具有Android 7的Xiaomi Redmi Note
4上,不会显示活动布局。我只在logcat上看到以下行:
I /时间轴:时间轴:Activity_launch_request时间:281438674目的:目的{flg = 0x30000000 cmp =
com.test.app / .MainActivity}
我认为这不是Android 7(API 24)的问题,因为在具有Android
7的另一台设备上,服务可以成功启动活动。我猜想,MIUI正在阻止从服务启动活动。
我尝试更改清单中定义活动的方式。我还尝试了几种不同的标志。我所有的测试都失败了。我无法成功开始活动。最糟糕的问题是日志中没有错误/异常。
有什么想法吗?
在系统设置应用程序>其他权限>在后台运行时显示弹出窗口的“应用程序信息”屏幕中。
这似乎是在MIUI 11中引入的。
编辑:这是我使用的一段代码。我将其添加到的权限列表中RecyclerView
。
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
String miui = (String) get.invoke(c, "ro.miui.ui.version.name");
if (miui != null && miui.contains("11")) {
PermissionData mPopup = new PermissionData();
mPopup.text = "Other permissions > Display pop-up while in background";
mPopup.onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
};
mPermissionData.add(mPopup);
}
更新:要检查是否已授予此权限,您可以使用一个已经运行的服务并启动一个虚拟的透明活动,然后在onCreate
回调a
LocalBroadcastManager
或类似对象上,您将知道它已被授予。这是一个丑陋的解决方案,但对某些人可能有用。
问题内容: 我目前正在使用在Oreo中崩溃的startWakefulService函数。我意识到我要么必须切换到startForegroundService()并使用前台服务,要么切换到JobIntentService,但是基于下面的代码,我不确定该怎么做。(对不起,我是android新手)。正确方向的任何观点将不胜感激。 这是在Android 8.x上运行时遇到的当前错误 致命异常:java.l
这是在Android8.x上运行时出现的当前错误 致命异常:java.lang.RuntimeException无法启动接收方com.heyjude.heyjudeapp.gcm.gcmbroadcastreceiver:java.lang.illegalstateException:不允许启动服务意图{act=com.google.android.c2dm.Intent.receive flg=
我有一个监控wifi连接的小部件,所以我启动了一项服务来启动广播接收器来检测网络变化。除了我退出主应用程序外,一切都正常:服务停止。 因此,我在小部件中启动了一个报警管理器,它几乎每分钟都会唤醒一次,并检查主应用程序是否已退出。如果是这种情况,我尝试重新启动我的wifi监控服务,但这次它崩溃了,并显示以下消息: 不允许开启服务Intent{cmp=包。CallbackNetworkWidgetSe