startActivity 从 TileService 或所有活动都在后台时的视图(android)

and*_*_su 2 android

前提:

  1. 安卓Q
  2. 我所有的活动都在后台

问题 1:

我在前台有一个视图,当用户单击该视图时,我尝试在 android Q 中启动一个 Activity。
这是我的代码。

Intent intent = new Intent(context, BorderActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这是行不通的,也没有发生崩溃。我得到一些日志。

D ActivityTaskManagerServiceInjector:MIUILOG-权限被拒绝活动:意图......



问题2:

我有一个 TileService,当用户单击状态栏中的图标时,我尝试启动一个活动。

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

安卓清单

<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>
Run Code Online (Sandbox Code Playgroud)

我得到同样的错误:

D ActivityTaskManagerServiceInjector:MIUILOG-权限被拒绝活动:意图......

如何从后台启动Activity?

and*_*_su 5

最后发现MIUI rom里面有个特殊权限。 permission:android.permission.START_ACTIVITIES_FROM_BACKGROUND
用户必须在应用程序设置中打开“在后台运行时显示弹出窗口”。我无法在应用程序运行时请求权限,我什至不知道用户是否获得了应用程序的权限。

  • 中国阿肖?我开始想知道华为和小米如何被允许将他们的设备称为“Android”。他们基本上创建了一个不再遵守任何标准的分叉。这只是许多应用程序重大更改的一个示例 (2认同)