我想为我的用户提供一个选项,可以在应用内创建特定页面的快捷方式。 当您长按聊天时,我在Whatsapp上看到了类似的用法,您可以创建这个特定聊天的桌面快捷方式。
我已经尝试找到一些关于此functionality的文档,但无法使其正常运行。 这就是我所拥有的:
不是启动器活动的活动(包括意图过滤器)
<activity android:name="com.my.example.pages.Topics"
android:parentActivityName="com.my.example.pages.Apps">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
createShortcut功能
public void createShortcut(){
Intent shortcutIntent = new Intent("com.my.example.pages.Topics");
Intent.ShortcutIconResource iconResource = Intent.ShortcutIconResource.fromContext(getActivity(), R.drawable.app_logo);
// The result we are passing back from this activity
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Test");
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
getActivity().setResult(getActivity().RESULT_OK, intent);
getActivity().finish();
Toast.makeText(getActivity(),"Shortcut created",Toast.LENGTH_SHORT).show();
}
清单
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
我可能遗漏了一些东西,因为在调用我得到Toasts的函数之后却没有创建快捷方式,并且由于finish()方法而退出了应用程序。
更清楚 - 如何为非启动器活动创建快捷方式?
*我在我的一个viewpager片段中运行代码。
答案 0 :(得分:7)
使用此选项为非启动器活动创建快捷方式。
private void createShortcutOfApp() {
Intent shortcutIntent = new Intent(getApplicationContext(),
YourTargetActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "App shortcut name");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
R.mipmap.logo_of_your_app_shortcut));
addIntent
.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false); //may it's already there so don't duplicate
getApplicationContext().sendBroadcast(addIntent);
}
现在在清单
中添加权限<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
现在定义
android:exported="true"
中的属性
<activity> tag
喜欢
<activity
android:name=".YourTargetActivity"
android:exported="true"></activity>
这就像whatsapp app聊天快捷方式一样。
答案 1 :(得分:0)
参考 link(pinned shortcuts) 后,以下 kotlin 代码对我有用
fun createWebActivityShortcut(context:Context,shortcutname:String,extra1:String) {
val shortcutManager = ContextCompat.getSystemService<ShortcutManager>(
context,
ShortcutManager::class.java
)
if (shortcutManager!!.isRequestPinShortcutSupported) {
val pinShortcutInfoBuilder = ShortcutInfo.Builder(context, "yourapp_"+shortcutname)
pinShortcutInfoBuilder.setShortLabel(shortcutname)
val intent = Intent(Intent.ACTION_VIEW, null, context, YourSpecificActivity::class.java)
intent.putExtra("extra1",extra1) //add as many extras as you like
pinShortcutInfoBuilder.setIntent(intent)
pinShortcutInfoBuilder.setIcon()//add your icon here
val pinShortcutInfo = pinShortcutInfoBuilder.build()
val pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(
pinShortcutInfo
)
val successCallback = PendingIntent.getBroadcast(
context, /* request code */ 0,
pinnedShortcutCallbackIntent, /* flags */ 0
)
shortcutManager.requestPinShortcut(
pinShortcutInfo,
successCallback.intentSender
)
}
}