【问题标题】:startActivity from TileService or from a view when all activities are in the background(android)当所有活动都在后台时,从 TileService 或视图开始活动(android)
【发布时间】:2019-12-28 03:14:45
【问题描述】:

前置条件:

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

问题一:

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

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,当用户单击状态栏中的图标时,我尝试启动一个活动。

@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 ...

如何从后台启动活动?

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

    • 中国鞋履?我开始想知道如何允许华为和小米将他们的设备称为“Android”。他们基本上创建了一个不再遵守任何标准的分叉。这只是许多应用程序重大更改的一个示例
    • @CaptainCrunch 三星也使用此权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多