Как я могу взаимодействовать с макетом Lockscreen для отображения текста в нем, как это приложение: - PullRequest
8 голосов
/ 27 сентября 2011

Я только что обнаружил это приложение: https://market.android.com/details?id=de.j4velin.lockscreenCalendar

Кажется, что теперь можно написать какой-то текст внутри экрана блокировки в месте, где обычно пишется сигнал тревоги.отображать пользовательский текст в этом месте, но не имею ни малейшего представления о том, как этого добиться.

Этому парню удается писать события календаря в этом месте.фрагмент, который поможет мне.

enter image description here

Ответы [ 6 ]

9 голосов
/ 27 сентября 2011

Это поразительно легко достичь и поразительно плохо документировано.Все, что вам нужно сделать, это установить строку тревоги в системных настройках следующим образом:

    String message = "This is a test";
    Settings.System.putString(context.getContentResolver(),
            Settings.System.NEXT_ALARM_FORMATTED, message);
1 голос
/ 28 августа 2013

Вам также нужно добавить

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

в androidmanifest.xml

1 голос
/ 27 сентября 2011

Я никогда не сталкивался с каким-либо законным способом в общедоступных API-интерфейсах Android воздействовать на экран блокировки. Если бы я вообще не играл с этим приложением, я бы не знал наверняка, но я думаю, он создал это действие, которое позволяет ему показывать любой текст, который он хочет. Затем использует приемник для прослушивания событий SCREEN_OFF или SCREEN_ON и запускает свою активность «блокировки» в это время.

Стоит отметить: если вы решите сделать что-то подобное для достижения желаемого эффекта, он не будет вести себя точно так же, как экран блокировки. Различия могут быть довольно незначительными и в конечном итоге могут подойти для ваших целей, но имейте в виду, что они есть. Также при условии, что вы пойдете по этому пути, он не будет работать, если у пользователя есть «шаблонная» блокировка, поскольку KeyguardManager не может программно отключить этот экран

1 голос
/ 27 сентября 2011

Это не совсем то, что вы просили, но код для пользовательского экрана блокировки можно найти здесь. Это может помочь вам.

http://code.google.com/p/contactowner/

0 голосов
/ 21 мая 2014

С решением marc1s есть 2 проблемы: 1. он не выглядит хорошо, и вы не можете изменить его внешний вид и заполнить, например, текстовый шрифт или цвет и т. Д.лучше, если вы показываете вид с помощью оконного менеджера из сервиса.Таким образом, вы можете показать любой вид, который хотите показать.

например, мой код ниже в 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);
0 голосов
/ 29 августа 2013

Голосованный ответ будет работать, только если никто другой не использует его для отображения своего сообщения. Если два получателя зарегистрированы для намеренного действия SCREEN_ON / OFF, будет отображено самое последнее сообщение получателя.

...