Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在主屏幕android中创建快捷方式_Android_Android Launcher_Android Shortcut - Fatal编程技术网

在主屏幕android中创建快捷方式

在主屏幕android中创建快捷方式,android,android-launcher,android-shortcut,Android,Android Launcher,Android Shortcut,这个问题听起来可能重复,但我发现没有一个答案是有效的: 我已经回答了以下问题: 但提议的解决方案不起作用 我使用了下面的解决方案,它在API级别

这个问题听起来可能重复,但我发现没有一个答案是有效的:

我已经回答了以下问题:

但提议的解决方案不起作用

我使用了下面的解决方案,它在API级别<23的情况下工作

  Intent shortcutIntent = new Intent(context,
                LedgerDetailActivity.class);
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, ledgerBean.getName());
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.ic_action_comments));
        addIntent.setAction("android.intent.action.CREATE_SHORTCUT");
        addIntent.putExtra("duplicate", false);
        context.sendBroadcast(addIntent);
新增权限:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

但上述解决方案并不适用于所有设备,有时会提供如下奇怪的功能:

  • 在一些设备中,比如三星Edge(Android N),没有创建快捷方式
  • 在我的Android 7.1(Android N)模拟器中,只创建了一个快捷方式

  • 有人能帮我吗,这个功能没有官方文档,请不要和安卓N中引入的应用程序快捷方式混淆。我需要在主屏幕上显示快捷方式

    要首先添加快捷方式,您必须在Android中添加权限:

    <uses-permission
        android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    
    如果发现创建了多个快捷方式以避免出现这种情况,则可以检查该快捷方式是否已创建:

    if(!getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).getBoolean(Utils.IS_ICON_CREATED, false)){
        addShortcut();
        getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).edit().putBoolean(Utils.IS_ICON_CREATED, true);
    }
    

    与其从所有不起作用的事情开始,也许你应该从解释你想做什么开始。光是这个话题是远远不够的。至少有一个答案完全误解了你。您可能需要提供一个屏幕截图并解释预期结果。操作应该是
    com.android.launcher.action.INSTALL\u快捷方式
    。在我测试过的三星设备上,创建快捷方式对我也不起作用。请更新我上面的评论。我使用的是
    Intent.EXTRA\u快捷方式\u图标
    位图
    。这导致了
    TransactionTooLargeException
    。我必须调整位图的大小。
    if(!getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).getBoolean(Utils.IS_ICON_CREATED, false)){
        addShortcut();
        getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).edit().putBoolean(Utils.IS_ICON_CREATED, true);
    }