Android: Get Installed Shortcuts

前端 未结 4 1585
名媛妹妹
名媛妹妹 2021-01-17 22:27

I have seen ways to make shortcuts, but I need to find a way to get a list of shortcuts installed on the phone.

I want my user to be able to select one of his/her sh

相关标签:
4条回答
  • 2021-01-17 23:02

    In addition to Jonathan,

    Each app can do shortcuts. Each shortcut specified in app's manifest. So you can get shortcuts list (this method in activity):
    Kotlin

    fun printShortcuts() {
        val shortcutIntent = Intent(Intent.ACTION_CREATE_SHORTCUT)
        val shortcuts = packageManager.queryIntentActivities(shortcutIntent, 0)
        shortcuts.forEach {
            println("name = ${it.activityInfo.name}, label = ${it.loadLabel(packageManager)}")
        }
    }
    

    It will print something like:

    I/System.out: name = com.whatsapp.camera.CameraActivity, label = WhatsApp Camera
    I/System.out: name = com.android.contacts.ContactShortcut, label = Contact
    I/System.out: name = alias.DialShortcut, label = Direct dial
    I/System.out: name = alias.MessageShortcut, label = Direct message
    
    0 讨论(0)
  • 2021-01-17 23:02

    I'm trying to do the same and there a lot of things not clear about this topic, at least not clear to me...........An example is Openapp market that create shortcuts everytime you "download" an app, but the shortcuts it is actually only a link to an html page. Anyway i have 2 android phones and in the firstone is working in the second one is not creating any shortcuts.......

    in may app i do the following:

     Intent shortcutIntent = new Intent(this,FinestraPrincipaleActivity.class);
     shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      shortcutIntent.putExtra("someParameter", "HelloWorld");
    
     Intent addIntent = new Intent();
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name");
      addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,  
     Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));
    
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
     this.sendBroadcast(addIntent);
    

    But someone told me that the is wrong but i didn't find anyother way to create shortcuts....

    0 讨论(0)
  • 2021-01-17 23:15

    The shortcuts are private to Launcher. There is no API, and anything you try to do will be very fragile as different launcher implementations (and versions) will have different storage structures.

    0 讨论(0)
  • 2021-01-17 23:16

    Here is how it is done in the Launcher...

    Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
    List<ResolveInfo> shortcuts = getPackageManager().queryIntentActivities(shortcutsIntent, 0);
    
    0 讨论(0)
提交回复
热议问题