Android 我如何与锁屏布局交互以在其中显示文本,如此应用程序:

Android 我如何与锁屏布局交互以在其中显示文本,如此应用程序:,android,textview,alarm,lockscreen,Android,Textview,Alarm,Lockscreen,我刚刚发现了这个应用程序: 现在似乎可以在锁屏内通常写入警报的位置写入一些文本 我想在这个地方显示自定义文本,但完全不知道如何实现这一点 这家伙成功地在这里写了日历事件 非常感谢你给我的任何线索//snippet对我有帮助 这不是您想要的东西,但是可以在这里找到定制锁屏的代码。它可能会对您有所帮助 我从来没有通过任何合法的方式在公共android API中影响锁屏。如果不玩这个应用程序,我就不知道了,但我猜是他创造了这个活动,让他可以显示任何他想要的文本。然后使用接收器监听SCREEN_OFF(

我刚刚发现了这个应用程序:

现在似乎可以在锁屏内通常写入警报的位置写入一些文本

我想在这个地方显示自定义文本,但完全不知道如何实现这一点

这家伙成功地在这里写了日历事件

非常感谢你给我的任何线索//snippet对我有帮助


这不是您想要的东西,但是可以在这里找到定制锁屏的代码。它可能会对您有所帮助


我从来没有通过任何合法的方式在公共android API中影响锁屏。如果不玩这个应用程序,我就不知道了,但我猜是他创造了这个活动,让他可以显示任何他想要的文本。然后使用接收器监听SCREEN_OFF(屏幕关闭)或SCREEN_ON(屏幕打开)事件,并在此时开始他的“锁定”活动


值得注意的是:如果你选择这样做来达到你想要的效果,它的行为将与锁屏完全不同。这些差异可能是相当轻微的,并且可能最终对您的目的来说是好的,但请注意它们确实存在。另外,如果用户有一个“模式”锁,那么假设您采用这种方式,它将不起作用,因为KeyguardManager无法以编程方式禁用该屏幕

这非常容易实现,而且文档记录也非常糟糕。您只需在系统设置中设置报警字符串,如下所示:

    String message = "This is a test";
    Settings.System.putString(context.getContentResolver(),
            Settings.System.NEXT_ALARM_FORMATTED, message);
您还需要添加

  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>


在androidmanifest.xml中,只有在没有其他人使用投票答案来显示他们的消息时,投票答案才会起作用。如果两个接收器注册用于屏幕开/关意图操作,则将显示最新的接收器消息。

使用marc1s的解决方案,有两个问题, 1.它看起来不好&你不能改变它的外观和填充,例如文本字体或颜色等 2.任何其他应用程序都可以替换它

因此,如果从服务中使用窗口管理器显示视图会更好。所以你可以展示 无论你想展示什么样的视角

e、 g.在我的服务的onStartCommand中,我的代码如下

WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

View mView = mInflater.inflate(R.layout.score, null);

    WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            /* | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON */,
            PixelFormat.RGBA_8888);

mWindowManager.addView(mView, mLayoutParams);

好的,所以我只能自定义文本,但不能自定义字体大小等等。。。非常感谢您的回答,简短而高效!我正在尝试在我的事件接收器类(BroadcastReceiver Extendes BroadcastReceiver)中使用此代码,我应该为mInflater pls使用什么卫星?LayoutFlater mInflater=(LayoutFlater)McContext.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);在onReceive()方法中,您将获得第二个context类型的参数,并将其分配给mContext