他アプリから起動可能なActivityの作り方

あるアクティビティを作ったとして、、AndroidManifest.xmlintent-filter内にアクションとMIMEタイプを指定することでアプリを外部から起動できるようになります。

例えば外部から起動される画像ビューワーのようなアプリの場合はactivity内に次のようなintent-filterを記述します。

<activity 
    android:name="com.xxx.myapp.GallaryActivity">           
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="image/*"/>
    </intent-filter>
</activity>

actionタグにはアクションの種類、dataには受け取るMIMEタイプの種類を書けばそれだけで外部からの起動を許可することが可能です。

もしこのアプリを外部から起動するにはつぎのようなコードを書きます。

String imagePath = "/storage/emulated/0/MyApp/image.png";
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri myUri = Uri.parse(imagePath);
intent.setDataAndType(myUri , "image/*");
startActivity(Intent.createChooser(intent, "Open image"));

これを実行すると下の画像のように画像ビューワーの候補一覧が表示されます。

画像ビューワーの一覧

起動したビューワー側では次のようにしてデータ(ここでは画像パス)を受け取れます。

String imagePath = getIntent().getData().toString();

///画像の表示...

以上、外部から起動可能なアプリを作る方法でした。では、また!

関連項目
プライバシーポリシー