Android: получить установленные ярлыки - PullRequest
8 голосов
/ 01 июня 2011

Я видел способы создания ярлыков, но мне нужно найти способ получить список ярлыков, установленных на телефоне.

Я хочу, чтобы мой пользователь мог выбрать один из его / ее ярлыкови запустить его из моего приложения.Есть ли способ сделать это (API) или мне понадобится метод отражения для вызова системной службы?

Ответы [ 4 ]

5 голосов
/ 12 августа 2012

Вот как это делается в Launcher ...

Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
List<ResolveInfo> shortcuts = getPackageManager().queryIntentActivities(shortcutsIntent, 0);
2 голосов
/ 01 июня 2011

Ярлыки являются частными для Launcher. API не существует, и все, что вы пытаетесь сделать, будет очень хрупким, поскольку разные реализации (и версии) запуска будут иметь разные структуры хранения.

0 голосов
/ 13 февраля 2018

В дополнение к Джонатан ,

Каждое приложение может делать ярлыки.Каждый ярлык указан в манифесте приложения.Таким образом, вы можете получить список ярлыков (этот метод в действии): 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)}")
    }
}

Будет напечатано что-то вроде:

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 голосов
/ 14 июня 2011

Я пытаюсь сделать то же самое, и есть много вещей, неясных в этой теме, по крайней мере, неясных для меня ........... Примером является рынок Openapp, который создает ярлыки каждый раз, когда вы «загрузить» приложение, но ярлыки на самом деле это только ссылка на HTML-страницу. Во всяком случае, у меня есть 2 телефона Android, и в первом работает во втором, не создает ярлыки .......

В приложении можно сделать следующее:

 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);

Но кто-то сказал мне, что это неправильно, но я не нашел другого способа создания ярлыков ....

...