Androidアプリの開発で、パッケージ名およびActivity名が分かっているアプリを、自分のアプリから起動したい時がある。たとえばプリインストールのGoogle製アプリとか。
この場合も、自パッケージ内の明示的インテントと同様に起動することができる。具体的には以下みたいにする。
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.setClassName("com.example.external.package", "com.example.external.package.SomeActivity");
//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //外部Activityを自分のActivityスタックとは別に立てたいとき。
startActivity(i);
注意点として、setClassName(String packageName, String ActivityName)するときに、ActivityName側もフルパッケージ名で指定する必要があること。これをしないとClassNotFoundExceptionになる。
あと、setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)しないと、例えば起動したアプリをHOMEボタンで終了した後にもう一回自分のアプリを立ち上げた時、自分のパッケージから起動したSomeActivityの方の画面が出てよくわからない事になる。これを避けるにはIntent.FLAG_ACTIVITY_NEW_TASKフラグを指定した状態でstartActivity()する。
このへんはTASKについて整理する必要がありそうだけど、別の機会にします。
0 件のコメント:
コメントを投稿