前提条件:
- 安卓Q
- 我的所有 Activity 都在后台进行
问题1:
我在前台有一个 View ,当用户单击该 View 时,我尝试在 android Q 中启动一个 Activity 。
这是我的代码。
Intent intent = new Intent(context, BorderActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
这不起作用,也没有发生崩溃。我得到一些日志。
D ActivityTaskManagerServiceInjector: MIUILOG- Permission Denied Activity : Intent ...
问题2:
我有一个 TileService,当用户单击状态栏中的图标时,我尝试启动一个 Activity 。
@TargetApi(Build.VERSION_CODES.N)
public class QuickSettingService extends TileService {
@Override
public void onClick() {
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityAndCollapse(intent);
}
}
AndroidManifest
<service
android:name=".service.QuickSettingService"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
我得到同样的错误:
D ActivityTaskManagerServiceInjector: MIUILOG- Permission Denied Activity : Intent ...
如何从后台启动Activity?
最佳答案
最后我发现MIUI rom中有一个特殊的权限。
权限:android.permission.START_ACTIVITIES_FROM_BACKGROUND
用户必须在应用设置中启用“在后台运行时显示弹出窗口”。我无法在应用程序运行时请求权限,甚至无法知道用户是否已授予该应用程序的权限。
关于android - 当所有 Activity 都在后台时,从 TileService 或从 View 启动Activity(android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59507822/