Я разрабатываю приложение для заметок на основе Android с категориями. Я должен создавать ярлыки заметок на главном экране. Когда пользователь нажимает на ярлык, соответствующая операция должна быть открыта, и конкретные данные должны быть установлены в Edit-текстах, т.е. его название и описание. Я не могу понять логику, чтобы сделать это.
Я перепробовал все возможные решения, которые приходят мне в голову. Я передал идентификатор заметки в ярлыке, но при запуске из ярлыка поля все еще пусты.
Это мой фрагмент кода для создания ярлыка:
Функция создания ярлыка:
private void createShortcutOfActivity() {
Intent shortcutIntent = new Intent(getApplicationContext(),
TextNotes.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, editTitle.getText().toString());
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
R.mipmap.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false); //may it's already there so don't duplicate
getApplicationContext().sendBroadcast(addIntent);
}
Эта функция вызывается, когда пользователь нажимает на опцию, чтобы создать ярлык.
В Menifest разрешение на использование:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
Также добавьте фильтр намерений и экспортируемое свойство в незапускаемую активность:
<activity
android:name=".TextNotes"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Действие получает данные из намерения при открытии заметки из другого действия:
Intent newInt=getIntent();
isDoubleClicked=newInt.getBooleanExtra("Chk",false);
Cat=newInt.getStringExtra("Category");
Id=newInt.getIntExtra("Id",0);
String title=newInt.getStringExtra("Message");
String description=newInt.getStringExtra("Message2");
check=newInt.getStringExtra("Check");
editTitle.setText(title);
editText.setText(description);
Я также пытался использовать этот идентификатор в контекстном назначении функции, но без изменений в результате.
shortcutIntent.putExtra("key_primary",Id);
Я хочу сохранить данные при открытии с помощью ярлыка. Например, для другого ярлыка примечания предполагаемые данные должны быть установлены в полях, как в WhatsApp, могут создаваться ярлыки чата для разных контактов. Но, к сожалению, я не могу понять, как это сделать, потому что каждый раз, когда я открываю с помощью ярлыка, его поля становятся пустыми. Где я должен передать идентификатор и как установить данные при запуске из ярлыка.