Delphi XE5でAndoridのインテントを使ってアプリケーションを起動する

Delphi XE5でインテントの使用例。

使用するユニット

uses
  Androidapi.JNI.JavaTypes, // StringToJString
  FMX.Helpers.Android, // SharedActivity
  Androidapi.JNI.GraphicsContentViewText; // TJIntent

使用する関数

StrToJURI

「StrToJURI(ASource)」は「TJnet_Uri.JavaClass.parse(StringToJString(ASource))」と同じ。

URLを開く

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setData(StrToJURI('http://www.gesource.jp/weblog/'));
  SharedActivity.startActivity(Intent);
end;

PDFファイルを開く

var
  Intent: JIntent;
  FileName: string;
begin
  FileName := …; //PDFファイルのファイル名
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setDataAndType(StrToJURI(FileName),
    StringToJString('application/pdf'));
  SharedActivity.startActivity(Intent);
end;

文字列を開く

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setType(StringToJString('text/plain'));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('インテントのテスト'));
  SharedActivity.startActivity(Intent);
end;

地図(Google Maps)を開く

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setData(StrToJURI('geo:0,0?q=大阪府大阪市'));
  SharedActivity.startActivity(Intent);
end;

Google Mapsで経路検索

大阪駅の緯度(34.701909)、経度(135.494977)、徒歩モード(mode=w)を指定している。

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setClassName(StringToJString('com.google.android.apps.maps'), StringToJString('com.google.android.maps.MapsActivity'));
  Intent.setData(StrToJURI('google.navigation:///?ll=34.701909,135.494977&title=大阪駅&mode=w'));
  SharedActivity.startActivity(Intent);
end;

ダイアラーを開く

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_DIAL);
  Intent.setData(StrToJURI('tel:090-XXXX-XXXX'));
  SharedActivity.startActivity(Intent);
end;

メールを送る

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
  Intent.setType(StringToJString('message/rfc822'));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, StringToJString('test@example.com'));
  Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString('メールの件名'));
  intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('メールの本文'));
  SharedActivity.startActivity(TJIntent.JavaClass.createChooser(Intent,
    StrToJCharSequence('メールソフトを選択してください')));
end;

Androidの設定画面を開く

var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;
  Intent.setAction(StringToJString('android.settings.SETTINGS'));
  SharedActivity.startActivity(Intent);
end;

学習中なので間違いがあれば教えてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください