Установить ярлык приложения на рабочий стол в Android, используя RAD Studio
Установка иконки приложения на рабочий стол всегда украшает функционал самого приложения, тем более реализация его не так сложна.
Для начала добавим в манифест разрешение на установку и удаление ярлыка. Для этого открываем в обычном текстовом редакторе файл AndroidManifest.template.xml в корне нашего приложения и вносим туда такие записи:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/> |
В нашем приложении подключаем следующие модули:
implementation {$IFDEF ANDROID} uses Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android,AndroidApi.Helpers, Androidapi.JNI.JavaTypes, FMX.Platform.Android, AndroidApi.JniBridge, AndroidApi.Jni.App, AndroidAPI.jni.OS; {$ENDIF} |
Подключаем именно так, иначе RAD Studio выведет ошибку о неправильном формате модулей.
Установка ярлыка реализуется в виде одной процедуры, в примере это событие по клику кнопки TSpeedButton:
procedure TForm1.SpeedButton1Click(Sender: TObject); {$IFDEF ANDROID} var ShortcutIntent: JIntent; addIntent: JIntent; wIconIdentifier : integer; wIconResource : JIntent_ShortcutIconResource; {$ENDIF} begin {$IFDEF ANDROID} ShortcutIntent := TJIntent.JavaClass.init(SharedActivityContext, SharedActivityContext.getClass); ShortcutIntent.setAction(TJIntent.JavaClass.ACTION_MAIN); addIntent := TJIntent.Create; addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_INTENT, TJParcelable.Wrap((shortcutIntent as ILocalObject).GetObjectID)); addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_NAME, StringToJString(Application.Title)); addIntent.setAction(StringToJString('com.android.launcher.action.INSTALL_SHORTCUT')); wIconIdentifier := SharedActivity.getResources.getIdentifier(StringToJString('ic_launcher'), StringToJString('drawable'), StringToJString('com.embarcadero.Project1')); wIconResource := TJIntent_ShortcutIconResource.JavaClass.fromContext(SharedActivityContext, wIconIdentifier); addIntent.putExtra(TJIntent.JavaClass.EXTRA_SHORTCUT_ICON_RESOURCE, TJParcelable.Wrap((wIconResource as ILocalObject).GetObjectID)); SharedActivityContext.sendBroadcast(addIntent); {$ENDIF} end; |
где в строке ‘com.embarcadero.Project1’ — Project1 — имя нашего проекта.
Ярлык будет устанавливаться каждый раз, когда будет нажиматься кнопка, поэтому с ограничением установок нужно предпринимать отдельные шаги.
Иконки для приложения загружаются в окне Project->Project Options. Нужно выбрать платформу Android и загрузить иконки с 5 разными размерами.