アプリが別のアプリを呼び出す
androidx java
2020.7.8 Coskx Lab
1 はじめに
アプリが別のアプリを立ち上げることがあります。
時には値を送ってそのアプリを立ち上げることもあります。
このようにアプリが別のアプリを立ち上げ,その際に値を送付する方法についてのメモを作ります。
2つのアプリを作りますが,それらは,「testAppFirst」「testAppSecond」とします。「testAppFirst」が「testAppSecond」を呼び出します。
ソースコード
2 使用環境
- Windows 10 64-bit
- Android Studio 3.6.3
3 別アプリ「testAppSecond」を起動するアプリ「testAppFirst」
「testAppFirst」の「MainActivity」で,起動要求のボタンが押されたら別のアプリ「testAppSecond」を起動することにします。
apptostartは起動する予定のアプリのパッケージ名です。
「mIntent.putExtra(Matchmark, str);」のMatchmarkは文字列strを送るときの合言葉です。
「testAppFirst」の変数の記述
private String apptostart = "jp.gr.java_conf.coskx.testappsecond";
private final String Matchmark = "trust me, Coskx";
「testAppFirst」の「MainActivity」のボタンのリスナの記述
PackageManager pm = getPackageManager();
Intent mIntent = pm.getLaunchIntentForPackage(apptostart);
mIntent.putExtra(Matchmark, str);
if (view.getId() == R.id.button) {
try {
startActivity(mIntent);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "対象のアプリがありません", Toast.LENGTH_SHORT).show();
}
}
4 起動されるアプリ「testAppSecond」
このアプリは起動されるため,そのことをAndroidManifestに記述する必要があります。
「AndroidManifest」に追加
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"
android:exported="true" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
「MainActivity」の「onCreate」で,合言葉を確かめて,起動元から送られた文字列を受け取り,textviewに表示します。
「MainActivity」の「onCreate」の該当部分
Intent intent = getIntent();
strgot = intent.getStringExtra(Matchmark);
if (strgot==null) strgot = "nothing has been obtained";
mTextView.setText(strgot);
5 実行の様子
|
|
TestAppFirstです。ボタンを押すと「Hello from Coskx」の文字列を伴ってTestAppSecondを起動します。
|
TestAppSecondです。受け取った「Hello from Coskx」を表示しています。
何もしなけれは「Hello World!」が表示されていたはずです。単体起動で何も受け取らなければ,「nothing has been obtained」が表示されます。
|
6 まとめ
値を与えて,別のアプリを起動しました。
https://blog.shg25.com/?p=19
を参考にさせていただきました。