我刚刚发现了这个应用程序:https ://market.android.com/details?id=de.j4velin.lockscreenCalendar
现在似乎可以在通常写警报的地方在锁屏内写一些文本。
我想在这个地方显示自定义文本,但完全不知道如何实现。
这家伙成功地在这个地方写了日历事件。
非常感谢任何可以帮助我的线索//片段。
我刚刚发现了这个应用程序:https ://market.android.com/details?id=de.j4velin.lockscreenCalendar
现在似乎可以在通常写警报的地方在锁屏内写一些文本。
我想在这个地方显示自定义文本,但完全不知道如何实现。
这家伙成功地在这个地方写了日历事件。
非常感谢任何可以帮助我的线索//片段。
这是非常容易实现的,而且文档记录非常糟糕。您只需在系统设置中设置报警字符串,如下:
String message = "This is a test";
Settings.System.putString(context.getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED, message);
这不是您要求的确切内容,但可以在此处找到自定义锁屏的代码。它可能会对您有所帮助。
我从来没有在公共 android API 中遇到过任何合法的方式来影响锁定屏幕。如果根本不玩那个应用程序,我不确定,但我猜他创建的活动允许他显示他想要的任何文本。然后使用接收器监听 SCREEN_OFF 或 SCREEN_ON 事件并在那时开始他的“锁定”活动。
值得注意的是:如果您选择执行这样的操作来实现您所追求的效果,它的行为将不会与锁定屏幕完全相同。差异可能相当轻微,最终可能对您的目的没问题,但请注意它们就在那里。另外假设你走这条路,如果用户有一个“模式”锁,它就不起作用,因为 KeyguardManager 无法以编程方式禁用该屏幕
你还需要添加
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
在 androidmanifest.xml 中
只有当没有其他人使用相同的答案来显示他们的信息时,投票的答案才会起作用。如果为 SCREEN_ON/OFF 意图操作注册了两个接收器,则将显示最新接收器的消息。
使用 marc1s 的解决方案有 2 个问题,1. 它看起来不太好,您无法更改其外观和填充,例如文本字体或颜色等 2. 任何其他应用程序都可以替换它
因此,如果您使用服务中的窗口管理器显示视图会更好。因此,您可以显示您想要显示的任何视图。
例如,我的服务的 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);