Ведение заметок – это основная функция Android, которая повышает продуктивность пользователей на устройствах с большим экраном. Приложения для заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, делать снимки экрана и добавлять к ним аннотации, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут открывать приложения для заметок с заблокированного экрана или во время работы с другими приложениями.
Поддержка стилуса для ведения заметок обеспечивает исключительное удобство для пользователей.
Роль приложения для заметок
Роль RoleManager.ROLE_NOTES идентифицирует приложения для заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE.
Чтобы получить роль заметок для приложения, выполните следующие действия:
- Вызовите
isRoleAvailable(), чтобы проверить статус роли. - Если роль заметок доступна, вызовите
createRequestRoleIntent(), чтобы получить намерение, связанное с заметками. - Вызовите
startActivityForResult()с намерением заметок, чтобы предложить пользователю назначить вашему приложению роль заметок.
Роль заметок может быть только у одного приложения.
Приложение открывается в ответ на неявное действие intent ACTION_CREATE_NOTE. Если приложение открывается с заблокированного экрана, оно разворачивается на весь экран. Если экран разблокирован, приложение открывается в плавающем окне.
Манифест приложения
Чтобы получить роль приложения для заметок, в манифесте приложения необходимо указать следующее:
<activity
android:name="YourActivityName"
android:exported="true"
android:showWhenLocked="true"
android:turnScreenOn="true">
<intent-filter>
<action android:name="android.intent.action.CREATE_NOTE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Декларация позволяет пользователям назначить ваше приложение для заметок по умолчанию.
ACTION_CREATE_NOTEзадает действие намерения, на которое реагирует приложение.showWhenLockedделает приложение доступным на заблокированном экране устройства.turnScreenOnпозволяет приложению включать экран устройства во время работы.
Функции приложения
Приложение для заметок, оптимизированное для больших экранов, предлагает полный набор функций.
Поддержка стилуса
Когда приложение вызывается с дополнительным параметром intent EXTRA_USE_STYLUS_MODE, установленным на true, оно должно открыть заметку, которая принимает ввод стилусом или сенсорный ввод.
Если для дополнительного параметра намерения задано значение false, приложение должно открыть заметку, в которой можно вводить текст с клавиатуры.
Доступ на заблокированном экране
Приложение должно предоставлять полноэкранный режим, который запускается, когда приложение открывается с заблокированного экрана устройства.
Приложение должно показывать только старые заметки, если пользователь дал согласие на это, когда устройство было разблокировано. В противном случае при открытии с заблокированного экрана приложение должно всегда создавать новую заметку.
Проверить, было ли приложение запущено с заблокированного экрана, можно с помощью KeyguardManager#isKeyguardLocked().
Чтобы попросить пользователя выполнить аутентификацию и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard():
val keyguardManager =
getSystemService(KEYGUARD_SERVICE) as KeyguardManager
keyguardManager.requestDismissKeyguard( this, object :
KeyguardDismissCallback() { override fun onDismissError() { // Unlock failed.
Dismissing keyguard is not feasible. } override fun onDismissSucceeded() { //
Unlock succeeded. Device is now unlocked. } override fun onDismissCancelled()
{ // Unlock failed. User cancelled operation or request otherwise cancelled. }
} )
Плавающие окна
Чтобы пользователь мог делать заметки в контексте, в приложении должно быть действие, которое открывается в плавающем окне, когда запущено другое приложение.
Приложение должно поддерживать режим multi-instance, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если приложение запущено в полноэкранном режиме или в режиме разделенного экрана.
Запись контента
Захват контента – ключевая функция приложений для заметок. С помощью функции записи контента пользователи могут делать скриншоты экрана за плавающим окном приложения для заметок. Пользователи могут сделать снимок всего экрана или его части, вставить его в заметку, а затем добавить аннотации или выделить нужные фрагменты.
В приложении для заметок должен быть элемент интерфейса, который запускает объект ActivityResultLauncher, созданный с помощью registerForActivityResult().
Действие intent ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE передается в средство запуска напрямую или через ActivityResultContract.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента в ваше приложение в аргументе обратного вызова registerForActivityResult().
В примере ниже используется общий контракт StartActivityForResult.
private val startForResult =
registerForActivityResult( ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?.data // Use
the URI to paste the captured content into the note. } } override fun
onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
setContent { NotesTheme { Surface(color =
MaterialTheme.colorScheme.background) { CaptureButton( onClick = {
Log.i("ContentCapture", "Launching intent...")
startForResult.launch(Intent(ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE))
}) } } } } @Composable fun CaptureButton(onClick: () -> Unit) {
Button(onClick = onClick)
{Text("Capture Content")} }
Приложение должно обрабатывать все коды результатов:
CAPTURE_CONTENT_FOR_NOTE_SUCCESSCAPTURE_CONTENT_FOR_NOTE_FAILEDCAPTURE_CONTENT_FOR_NOTE_USER_CANCELEDCAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTEDCAPTURE_CONTENT_FOR_NOTE_BLOCKED_BY_ADMIN
Когда контент будет записан, вставьте изображение в заметку, например:
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?data // Use
the URI to paste the captured content into the note. } }
Функция записи контента должна быть доступна в интерфейсе, только когда приложение для заметок запущено в плавающем окне, а не в полноэкранном режиме с заблокированного экрана. Пользователи могут делать скриншоты самого приложения для заметок, используя встроенные функции устройства.
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузыре), вызовите следующие методы:
isLaunchedFromBubble()чтобы проверить, что приложение для заметок не было запущено в полноэкранном режиме с заблокированного экрана устройства.isRoleHeld(RoleManager.ROLE_NOTES), чтобы проверить, является ли ваше приложение приложением для заметок по умолчанию (если нет, оно может работать в чате или другом типе всплывающего окна).
Дополнительные ресурсы
,Ведение заметок – это основная функция Android, которая повышает продуктивность пользователей на устройствах с большим экраном. Приложения для заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, делать снимки экрана и добавлять к ним аннотации, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут открывать приложения для заметок с заблокированного экрана или во время работы с другими приложениями.
Поддержка стилуса для ведения заметок обеспечивает исключительное удобство для пользователей.
Роль приложения для заметок
Роль RoleManager.ROLE_NOTES идентифицирует приложения для заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE.
Чтобы получить роль заметок для приложения, выполните следующие действия:
- Вызовите
isRoleAvailable(), чтобы проверить статус роли. - Если роль заметок доступна, вызовите
createRequestRoleIntent(), чтобы получить намерение, связанное с заметками. - Вызовите
startActivityForResult()с намерением заметок, чтобы предложить пользователю назначить вашему приложению роль заметок.
Роль заметок может быть только у одного приложения.
Приложение открывается в ответ на неявное действие intent ACTION_CREATE_NOTE. Если приложение открывается с заблокированного экрана, оно разворачивается на весь экран. Если экран разблокирован, приложение открывается в плавающем окне.
Манифест приложения
Чтобы получить роль приложения для заметок, в манифесте приложения необходимо указать следующее:
<activity
android:name="YourActivityName"
android:exported="true"
android:showWhenLocked="true"
android:turnScreenOn="true">
<intent-filter>
<action android:name="android.intent.action.CREATE_NOTE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Декларация позволяет пользователям назначить ваше приложение для заметок по умолчанию.
ACTION_CREATE_NOTEзадает действие намерения, на которое реагирует приложение.showWhenLockedделает приложение доступным на заблокированном экране устройства.turnScreenOnпозволяет приложению включать экран устройства во время работы.
Функции приложения
Приложение для заметок, оптимизированное для больших экранов, предлагает полный набор функций.
Поддержка стилуса
Когда приложение вызывается с дополнительным параметром intent EXTRA_USE_STYLUS_MODE, установленным на true, оно должно открыть заметку, которая принимает ввод стилусом или сенсорный ввод.
Если для дополнительного параметра намерения задано значение false, приложение должно открыть заметку, в которой можно вводить текст с клавиатуры.
Доступ на заблокированном экране
Приложение должно предоставлять полноэкранный режим, который запускается, когда приложение открывается с заблокированного экрана устройства.
Приложение должно показывать только старые заметки, если пользователь дал согласие на это, когда устройство было разблокировано. В противном случае при открытии с заблокированного экрана приложение должно всегда создавать новую заметку.
Проверить, было ли приложение запущено с заблокированного экрана, можно с помощью KeyguardManager#isKeyguardLocked().
Чтобы попросить пользователя выполнить аутентификацию и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard():
val keyguardManager =
getSystemService(KEYGUARD_SERVICE) as KeyguardManager
keyguardManager.requestDismissKeyguard( this, object :
KeyguardDismissCallback() { override fun onDismissError() { // Unlock failed.
Dismissing keyguard is not feasible. } override fun onDismissSucceeded() { //
Unlock succeeded. Device is now unlocked. } override fun onDismissCancelled()
{ // Unlock failed. User cancelled operation or request otherwise cancelled. }
} )
Плавающие окна
Чтобы пользователь мог делать заметки в контексте, в приложении должно быть действие, которое открывается в плавающем окне, когда запущено другое приложение.
Приложение должно поддерживать режим multi-instance, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если приложение запущено в полноэкранном режиме или в режиме разделенного экрана.
Запись контента
Захват контента – ключевая функция приложений для заметок. С помощью функции записи контента пользователи могут делать скриншоты экрана за плавающим окном приложения для заметок. Пользователи могут сделать снимок всего экрана или его части, вставить его в заметку, а затем добавить аннотации или выделить нужные фрагменты.
В приложении для заметок должен быть элемент интерфейса, который запускает объект ActivityResultLauncher, созданный с помощью registerForActivityResult().
Действие intent ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE передается в средство запуска напрямую или через ActivityResultContract.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента в ваше приложение в аргументе обратного вызова registerForActivityResult().
В примере ниже используется общий контракт StartActivityForResult.
private val startForResult =
registerForActivityResult( ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?.data // Use
the URI to paste the captured content into the note. } } override fun
onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
setContent { NotesTheme { Surface(color =
MaterialTheme.colorScheme.background) { CaptureButton( onClick = {
Log.i("ContentCapture", "Launching intent...")
startForResult.launch(Intent(ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE))
}) } } } } @Composable fun CaptureButton(onClick: () -> Unit) {
Button(onClick = onClick)
{Text("Capture Content")} }
Приложение должно обрабатывать все коды результатов:
CAPTURE_CONTENT_FOR_NOTE_SUCCESSCAPTURE_CONTENT_FOR_NOTE_FAILEDCAPTURE_CONTENT_FOR_NOTE_USER_CANCELEDCAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTEDCAPTURE_CONTENT_FOR_NOTE_BLOCKED_BY_ADMIN
Когда контент будет записан, вставьте изображение в заметку, например:
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?data // Use
the URI to paste the captured content into the note. } }
Функция записи контента должна быть доступна в интерфейсе, только когда приложение для заметок запущено в плавающем окне, а не в полноэкранном режиме с заблокированного экрана. Пользователи могут делать скриншоты самого приложения для заметок, используя встроенные функции устройства.
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузыре), вызовите следующие методы:
isLaunchedFromBubble()чтобы проверить, что приложение для заметок не было запущено в полноэкранном режиме с заблокированного экрана устройства.isRoleHeld(RoleManager.ROLE_NOTES), чтобы проверить, является ли ваше приложение приложением для заметок по умолчанию (если нет, оно может работать в чате или другом типе всплывающего окна).
Дополнительные ресурсы
,Ведение заметок – это основная функция Android, которая повышает продуктивность пользователей на устройствах с большим экраном. Приложения для заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, делать снимки экрана и добавлять к ним аннотации, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут открывать приложения для заметок с заблокированного экрана или во время работы с другими приложениями.
Поддержка стилуса для ведения заметок обеспечивает исключительное удобство для пользователей.
Роль приложения для заметок
Роль RoleManager.ROLE_NOTES идентифицирует приложения для заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE.
Чтобы получить роль заметок для приложения, выполните следующие действия:
- Вызовите
isRoleAvailable(), чтобы проверить статус роли. - Если роль заметок доступна, вызовите
createRequestRoleIntent(), чтобы получить намерение, связанное с заметками. - Вызовите
startActivityForResult()с намерением заметок, чтобы предложить пользователю назначить вашему приложению роль заметок.
Роль заметок может быть только у одного приложения.
Приложение открывается в ответ на неявное действие intent ACTION_CREATE_NOTE. Если приложение открывается с заблокированного экрана, оно разворачивается на весь экран. Если экран разблокирован, приложение открывается в плавающем окне.
Манифест приложения
Чтобы получить роль приложения для заметок, в манифесте приложения необходимо указать следующее:
<activity
android:name="YourActivityName"
android:exported="true"
android:showWhenLocked="true"
android:turnScreenOn="true">
<intent-filter>
<action android:name="android.intent.action.CREATE_NOTE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Декларация позволяет пользователям назначить ваше приложение для заметок по умолчанию.
ACTION_CREATE_NOTEзадает действие намерения, на которое реагирует приложение.showWhenLockedделает приложение доступным на заблокированном экране устройства.turnScreenOnпозволяет приложению включать экран устройства во время работы.
Функции приложения
Приложение для заметок, оптимизированное для больших экранов, предлагает полный набор функций.
Поддержка стилуса
Когда приложение вызывается с дополнительным параметром intent EXTRA_USE_STYLUS_MODE, установленным на true, оно должно открыть заметку, которая принимает ввод стилусом или сенсорный ввод.
Если для дополнительного параметра намерения задано значение false, приложение должно открыть заметку, в которой можно вводить текст с клавиатуры.
Доступ на заблокированном экране
Приложение должно предоставлять полноэкранный режим, который запускается, когда приложение открывается с заблокированного экрана устройства.
Приложение должно показывать только старые заметки, если пользователь дал согласие на это, когда устройство было разблокировано. В противном случае при открытии с заблокированного экрана приложение должно всегда создавать новую заметку.
Проверить, было ли приложение запущено с заблокированного экрана, можно с помощью KeyguardManager#isKeyguardLocked().
Чтобы попросить пользователя выполнить аутентификацию и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard():
val keyguardManager =
getSystemService(KEYGUARD_SERVICE) as KeyguardManager
keyguardManager.requestDismissKeyguard( this, object :
KeyguardDismissCallback() { override fun onDismissError() { // Unlock failed.
Dismissing keyguard is not feasible. } override fun onDismissSucceeded() { //
Unlock succeeded. Device is now unlocked. } override fun onDismissCancelled()
{ // Unlock failed. User cancelled operation or request otherwise cancelled. }
} )
Плавающие окна
Чтобы пользователь мог делать заметки в контексте, в приложении должно быть действие, которое открывается в плавающем окне, когда запущено другое приложение.
Приложение должно поддерживать режим multi-instance, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если приложение запущено в полноэкранном режиме или в режиме разделенного экрана.
Запись контента
Захват контента – ключевая функция приложений для заметок. С помощью функции записи контента пользователи могут делать скриншоты экрана за плавающим окном приложения для заметок. Пользователи могут сделать снимок всего экрана или его части, вставить его в заметку, а затем добавить аннотации или выделить нужные фрагменты.
В приложении для заметок должен быть элемент интерфейса, который запускает объект ActivityResultLauncher, созданный с помощью registerForActivityResult().
Действие intent ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE передается в средство запуска напрямую или через ActivityResultContract.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента в ваше приложение в аргументе обратного вызова registerForActivityResult().
В примере ниже используется общий контракт StartActivityForResult.
private val startForResult =
registerForActivityResult( ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?.data // Use
the URI to paste the captured content into the note. } } override fun
onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
setContent { NotesTheme { Surface(color =
MaterialTheme.colorScheme.background) { CaptureButton( onClick = {
Log.i("ContentCapture", "Launching intent...")
startForResult.launch(Intent(ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE))
}) } } } } @Composable fun CaptureButton(onClick: () -> Unit) {
Button(onClick = onClick)
{Text("Capture Content")} }
Приложение должно обрабатывать все коды результатов:
CAPTURE_CONTENT_FOR_NOTE_SUCCESSCAPTURE_CONTENT_FOR_NOTE_FAILEDCAPTURE_CONTENT_FOR_NOTE_USER_CANCELEDCAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTEDCAPTURE_CONTENT_FOR_NOTE_BLOCKED_BY_ADMIN
Когда контент будет записан, вставьте изображение в заметку, например:
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result: ActivityResult -> if (result.resultCode ==
Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { val uri = result.data?data // Use
the URI to paste the captured content into the note. } }
Функция записи контента должна быть доступна в интерфейсе, только когда приложение для заметок запущено в плавающем окне, а не в полноэкранном режиме с заблокированного экрана. Пользователи могут делать скриншоты самого приложения для заметок, используя встроенные функции устройства.
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузыре), вызовите следующие методы:
isLaunchedFromBubble()чтобы проверить, что приложение для заметок не было запущено в полноэкранном режиме с заблокированного экрана устройства.isRoleHeld(RoleManager.ROLE_NOTES), чтобы проверить, является ли ваше приложение приложением для заметок по умолчанию (если нет, оно может работать в чате или другом типе всплывающего окна).