Android 电视机屏保意图

Android TV Set screensaver intent

无法像动态壁纸那样打开屏保预览,所以我想提供一个快捷方式,让用户可以打开电视设置并手动设置屏保。

目前我使用意图操作 android.settings.SETTINGS 打开系统设置,这会打开根设备设置。

在手机上我可以启动 android.settings.DREAM_SETTINGS(在文档 here 中有描述),它会打开相应的设置部分。但这在电视上不起作用(在模拟器上试过)。可以在 Android 电视上打开吗?

我在“空中之梦”屏保的源代码中找到了启动这个activity的方法:https://github.com/cachapa/AerialDream/blob/master/app/src/main/java/com/codingbuffalo/aerialdream/SettingsFragment.java#L29

// Check if the daydream intent is available - some devices (e.g. NVidia Shield) do not support it
Intent intent = new Intent(SCREENSAVER_SETTINGS);
if (!intentAvailable(intent)) {
    // Try opening the daydream settings activity directly: https://gist.github.com/reines/bc798a2cb539f51877bb279125092104
    intent = new Intent(Intent.ACTION_MAIN).setClassName("com.android.tv.settings", "com.android.tv.settings.device.display.daydream.DaydreamActivity");
    if (!intentAvailable(intent)) {
        // If all else fails, open the normal settings screen
        intent = new Intent(SETTINGS);
    }
}
startActivity(intent);

private boolean intentAvailable(Intent intent) {
    PackageManager manager = getActivity().getPackageManager();
    List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
    return !infos.isEmpty();
}

以防万一有人在 Nvidia Shield 上寻找启动屏幕保护程序。

意向名称是 com.android.systemui/.Somnambulator

如果使用 Button Mapper 应用程序,请使用“Broadcase Intent”和“Package”:com.android.systemui 和“Component”:com.android.systemui.Somnambulator