Androidのホーム画面にショートカットを作成する(Android8.0以降) ~Delphiでお手軽プログラミング
Delphiを起動して新規作成を行う
Delphiを起動し、ファイル→新規作成→マルチデバイスアプリケーションをクリックし、空のアプリケーションを選択してOKボタンを押してプロジェクトを作成します。TButtonを1つ配置します。
ソースコードを記述する
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
procedure Button1Click(Sender: TObject);
private
{ private 宣言 }
public
{ public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.GraphicsContentViewText
,Androidapi.JNI.JavaTypes, Androidapi.JNI.OS, Androidapi.JNIBridge, FMX.Platform.Android;
procedure TForm1.Button1Click(Sender: TObject);
var
SCIntent:JIntent;
wIconIdentifier : integer;
wIconResource : JIntent_ShortcutIconResource;
sm:JShortcutManager;
sib:JShortcutInfo_Builder;
info:JShortcutInfo;
ico:JIcon;
begin
//本アプリケーションを起動するIntent
SCIntent := TJIntent.JavaClass.init(
TAndroidHelper.Context.getApplicationContext,
MainActivity.getClass);
SCIntent.setAction(TJIntent.JavaClass.ACTION_MAIN);
//アイコンのリソースIDを取得
wIconIdentifier :=
TAndroidHelper.Activity.getResources.getIdentifier(
StringToJString('ic_launcher'), //リソース名
StringToJString('drawable'),
TAndroidHelper.Context.getApplicationContext.getPackageName
);
wIconResource :=TJIntent_ShortcutIconResource.JavaClass.fromContext(
TAndroidHelper.Context, wIconIdentifier
);
ico:=TJIcon.JavaClass.createWithResource(
TAndroidHelper.Context.getPackageName, wIconIdentifier
);
sib:=TJShortcutInfo_Builder.JavaClass.init(
TAndroidHelper.Context.getApplicationContext,
TJIntent.JavaClass.ACTION_MAIN
);
sib.setShortLabel(StrToJCharSequence('ショートカット名'));
sib.setLongLabel(StrToJCharSequence('ショートカット名'));
sib.setDisabledMessage(StrToJCharSequence('使えない時名'));
sib.setIcon(ico);
sib.setIntent(SCIntent);
info:=sib.build();
sm:=TJShortcutManager.Wrap(
TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.SHORTCUT_SERVICE)
);
//ホーム画面にショートカットを作成する
sm.requestPinShortcut(info,nil);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then Key := 0;
end;
end.
実行する
