暗黙的Intent その2 とりあえずChromeの「共有」に自作アプリを載せるだけなら簡単だった!
どうも!LSSです!!
AndroidStudio+Kotlinでのアプリ開発を勉強中です。
さて、先日の記事で
little-strange.hatenablog.com
というのを書きましたが、今回は実践としてやってみたところ、
Chromeの「共有」に自作アプリを載せるだけなら簡単だった!
という話です。
結果の画面写真と、AndroidManifest.xmlの内容
Chromeのメニューから | 共有を開くとそこにいます。 | タップすると自作アプリ起動! |
AndroidManifest.xml(intent-filter部分をコピペしただけ!)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.littlestrangesoftware.feedtest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ReceivedActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
やってみた手順
まず、新規プロジェクトを作成、名前をとりあえず「feedtest」としました。(任意の名前)
次に、いきなりAndroidManifest.xmlを開き、まずMainActivityのとこのintent-filterを書き換えましたが、AndroidStudioに怒られましたw(MAINなActivityが無いよ、と)
だもんで、次に別のActivityを作成、名前を「ReceivedActivity」としました。(こっちも任意の名前)
一応、見分けがつくように無意味にボタンをひとつ配置しておきましたw
AndroidManifest.xmlに自動的に、
<activity android:name=".ReceivedActivity"></activity>
が追記されているので、そこに
を参考に、
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:mimeType="text/plain"/>
</intent-filter>
をコピペ。
Intentを受け取ってからどうするかとか、まだいっさい書いていない状態ですが…とりあえずエミュレータにインストール!
インストールが終わると、エミュレータ上でアプリが立ち上がり、デフォルトの
「Hello World」画面が出てきます。
エミュレータ上でそっとアプリを閉じ、Chromeを立ち上げて適当なページを開きました。
んで、「共有」を選択すると…
もう既に、そこにいた!!
「共有」にアプリを載せたいだけだったら
AndroidManifest.xmlにintent-filterを書くだけでいいようですね^^
第一の目標があっさり達成できたのはいいけど、内容の薄い記事になりましたwww
intent-filterって、今回はブラウザの「共有」を受け取るパターンでしたが、他にも色々あるようです。
名前にintentとつくからには、どこかから呼び出されて~の場合についての記述かと思いますが、最初にMainActivityのintent-filterを書き換えて怒られたように、アプリ起動時の挙動にもかかわってきたりするっぽい。
アプリ起動したよ、っていうトリガーを受信していると考えるべきなのかな?
次の暗黙的Intentの実験は「受け取ったものをどうにかする」に挑戦します!
次回もまた、よろしくお願いします^^