【问题标题】:Disable quick settings tile in Android在 Android 中禁用快速设置磁贴
【发布时间】:2018-01-31 05:47:46
【问题描述】:

我找不到在 Android 中以编程方式禁用快速设置磁贴的方法,这是我们企业启动器的要求。

除了How to disable the notification bar pull-down in Android?https://e2e.ti.com/support/embedded/android/f/509/t/283260之外还有什么线索

有可能吗?谢谢!

【问题讨论】:

  • 你想禁用通知栏吗?
  • 您需要为此编写/创建自定义 ROM
  • 如果你想隐藏状态栏,这可能对你有帮助:stackoverflow.com/questions/32984476/…
  • @AcademyofProgrammer,是的,我已经为一个 IPTV 应用程序做了一些事情,如果你真的想要,我可以为你做一个 POC。给我发消息@rahul.androidnewsletter@gmail.com 进行进一步讨论。
  • 或者您可以阻止用户在使用您的应用程序时下拉通知栏。但是当用户禁用您的应用程序时,他或她可以访问通知栏。或者如果你想像往常一样禁用通知栏的下拉,那么你只需要设置像Apps that can draw over other apps这样的权限,之后你的带有禁用栏的应用程序在每个应用程序顶部运行并且用户无法访问栏。

标签: java android android-launcher


【解决方案1】:

您可以在全屏模式下启动您的应用程序吗? 就像这里解释的:https://stackoverflow.com/a/8470893/2801860

<activity
  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  ....
>

【讨论】:

  • 谢谢。嗯...我这样做了 `protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 全屏模式 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); ` 就像这里的手册 developer.android.com/training/system-ui/dim.html#dim 我们不能绝对隐藏它。
【解决方案2】:

是的,你可以做到。我曾使用以下 sn-p 禁用快速设置。

public static void preventStatusBarExpansion(Context context) {
        WindowManager manager = ((WindowManager) context.getApplicationContext()
                .getSystemService(Context.WINDOW_SERVICE));



        Activity activity = (Activity)context;
        WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
        localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
        localLayoutParams.gravity = Gravity.TOP;
        localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|

                // this is to enable the notification to recieve touch events
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |

                // Draws over status bar
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

        localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        int resId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        int result = 0;
        if (resId > 0) {
            result = activity.getResources().getDimensionPixelSize(resId);
        }

        localLayoutParams.height = result;

        localLayoutParams.format = PixelFormat.TRANSPARENT;

        customViewGroup view = new customViewGroup(context);

        manager.addView(view, localLayoutParams);
    }

在需要时调用此方法。在调用此方法之前,请确保您具有屏幕覆盖权限。 但是这个权限在 Oreo 中被弃用了。

【讨论】:

  • 谢谢,兄弟!我刚刚投了赞成票,但几天后会检查它。
【解决方案3】:

这似乎根本不可能。

这就是答案。

【讨论】:

  • 你找到解决办法了吗?
  • @STiGMa 唯一的解决方案是重新编译Android OS源代码。
【解决方案4】:

不,不是不可能。使用 ACTION_CLOSE_SYSTEM_DIALOGS 防止屏幕锁定时被下拉。

【讨论】:

    猜你喜欢
    • 2017-08-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多