通过 activity 快捷方式启动时,如何在字段中设置数据库中的特定数据?
How to set specific data from database in fields when launch through activity shortcut?
我正在开发一个基于 android 的笔记应用程序,categories.I 应该在主屏幕上创建笔记快捷方式。当用户点击快捷方式时,相关的 activity 应该打开,具体数据应该在 Edit-texts 中设置,即它的标题和 description.I 无法理解这样做的逻辑。
我尝试了我想到的所有可能的解决方案。我在快捷方式意图中传递了 Id of note,但是当它从快捷方式启动时,字段仍然是空的。
这是我创建快捷方式的代码片段:
创建快捷方式的函数:
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" />
同时添加 Intent 过滤器并在非启动时导出 属性 activity:
<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>
当打开另一个 activity 的笔记时,activity 从 Intent 接收数据:
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);
我也试过在函数的快捷意图中使用这个id,但结果没有变化。
shortcutIntent.putExtra("key_primary",Id);
我想在打开时保留数据,使用 shortcut.For 示例为不同的笔记快捷方式,应该在字段中设置预期的数据,就像在 whatsapp 中一样,可以创建不同联系人的聊天快捷方式。但不幸的是,我无法理解应该怎么做,因为每次我使用快捷方式打开时,它的字段都会变空。从快捷方式启动时我应该在哪里传递id以及如何设置数据。
如果您使用 shortcutIntent.putExtra("key_primary",Id);
,那么您需要使用
检索它
Id=newInt.getIntExtra("key_primary",0);
也就是第一个参数(key_primary)是key,用来标识具体的Intent Extra。因此,键值必须与为要检索的值(默认值除外)放置 Intent Extra 时使用的键值相匹配。
这样编码 Id=newInt.getIntExtra("Id",0);
而不使用 matching/paired shortcutIntent.putExtra("Id",Id);
将始终导致 0,因为 Intent Extra 不存在,因此返回默认值。
我正在开发一个基于 android 的笔记应用程序,categories.I 应该在主屏幕上创建笔记快捷方式。当用户点击快捷方式时,相关的 activity 应该打开,具体数据应该在 Edit-texts 中设置,即它的标题和 description.I 无法理解这样做的逻辑。
我尝试了我想到的所有可能的解决方案。我在快捷方式意图中传递了 Id of note,但是当它从快捷方式启动时,字段仍然是空的。 这是我创建快捷方式的代码片段:
创建快捷方式的函数:
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" />
同时添加 Intent 过滤器并在非启动时导出 属性 activity:
<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>
当打开另一个 activity 的笔记时,activity 从 Intent 接收数据:
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);
我也试过在函数的快捷意图中使用这个id,但结果没有变化。
shortcutIntent.putExtra("key_primary",Id);
我想在打开时保留数据,使用 shortcut.For 示例为不同的笔记快捷方式,应该在字段中设置预期的数据,就像在 whatsapp 中一样,可以创建不同联系人的聊天快捷方式。但不幸的是,我无法理解应该怎么做,因为每次我使用快捷方式打开时,它的字段都会变空。从快捷方式启动时我应该在哪里传递id以及如何设置数据。
如果您使用 shortcutIntent.putExtra("key_primary",Id);
,那么您需要使用
Id=newInt.getIntExtra("key_primary",0);
也就是第一个参数(key_primary)是key,用来标识具体的Intent Extra。因此,键值必须与为要检索的值(默认值除外)放置 Intent Extra 时使用的键值相匹配。
这样编码 Id=newInt.getIntExtra("Id",0);
而不使用 matching/paired shortcutIntent.putExtra("Id",Id);
将始终导致 0,因为 Intent Extra 不存在,因此返回默认值。