Создание ярлыка на домашнем экране - PullRequest
1 голос
/ 05 марта 2012

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

Может кто-нибудь сказать мне (с кодом и как код на самом деле работает), как можно создать ярлык?Я видел много строк кода, но я не могу понять.Пожалуйста, объясните мне.

Я использовал следующий код => Основная проблема заключается в том, что ярлык создается на главном экране.Но когда я нажимаю на него, появляется сообщение Toast, например «Приложение не установлено на вашем телефоне ». И в журнале появляется сообщение об ошибке

1) WARN / ActivityManager (58): Отказано в доступе: checkComponentPermission () reqUid = 10046 2) WARN / ActivityManager (58): Отказ в разрешении: начальное намерение {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3240][77,319]} из ProcessRecord {44f19b88 123: com.android.launcher / 10025} (pid = 123, uid = 10025) требуется нулевое значение 3) ОШИБКА / Панель запуска (123): Программа запуска не имеет разрешения на запуск Intent {act =android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3240] [77,319]}.Убедитесь, что вы создали ГЛАВНЫЙ интент-фильтр для соответствующего действия или использовали экспортированный атрибут для этого действия.tag = ShortcutInfo (title = Sukumar) intent = Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3240] [77,319]} 4) ОШИБКА / Средство запуска (123): Java.lang.SecurityException: Отказ в разрешении: запуск Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3240] [77,319]} из ProcessRecord {44f19b88 123: com.android.launcher / 10025} (pid = 123, uid = 10025) требуется ноль


`package a.a.a;

 import android.app.Activity;
  import android.content.Intent;
    import android.os.Bundle;

public class ShortActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Intent i=new Intent(this,s.class);
    Intent j=new Intent();
    j.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);
    j.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Sukumar");
    j.putExtra(Intent.EXTRA_SHORTCUT_ICON,R.drawable.icon);
    j.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    this.sendBroadcast(j);


}


}`

1 Ответ

0 голосов
/ 05 марта 2012

Чтобы создать ярлык приложения на главном экране Android, нам просто нужно запустить простое намерение с действием com.android.launcher.action.INSTALL_SHORTCUT. Имя и значок ярлыка мы можем поставить с помощью дополнительных параметров Intent.
Проверьте метод ниже:

Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intentActivity);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, textShortcut);
Parcelable iconResource = (Parcelable) bitmap;
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconResource);
intent.putExtra("duplicate", duplicateNeed); // (duplicateNeed=false)
// will not allow the
// duplicate same name
// shortcuts.
intent.setAction(INSTALL_SHORTCUT_ACTION);
getApplicationContext().sendBroadcast(intent);
...