前提:
问题 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?
最后发现MIUI rom里面有个特殊权限。
permission:android.permission.START_ACTIVITIES_FROM_BACKGROUND
用户必须在应用程序设置中打开“在后台运行时显示弹出窗口”。我无法在应用程序运行时请求权限,我什至不知道用户是否获得了应用程序的权限。
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |