Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

暗黙的Intent その2 とりあえずChromeの「共有」に自作アプリを載せるだけなら簡単だった!

 どうも!LSSです!!

 

 AndroidStudio+Kotlinでのアプリ開発を勉強中です。

 

 さて、先日の記事で
little-strange.hatenablog.com
というのを書きましたが、今回は実践としてやってみたところ、

Chromeの「共有」に自作アプリを載せるだけなら簡単だった!
という話です。

 

 

 

 

結果の画面写真と、AndroidManifest.xmlの内容

 

f:id:little_strange:20191221144912p:plain

f:id:little_strange:20191221144940p:plain

f:id:little_strange:20191221144957p:plain

Chromeのメニューから  共有を開くとそこにいます。  タップすると自作アプリ起動!

 

AndroidManifest.xmlintent-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を受け取ってからどうするかとか、まだいっさい書いていない状態ですが…とりあえずエミュレータにインストール!

 

 インストールが終わると、エミュレータ上でアプリが立ち上がり、デフォルトの

 f:id:little_strange:20191221151938p:plain

 「Hello World」画面が出てきます。

 

 エミュレータ上でそっとアプリを閉じ、Chromeを立ち上げて適当なページを開きました。
んで、「共有」を選択すると…

f:id:little_strange:20191221144940p:plain

  もう既に、そこにいた!!

 

 

「共有」にアプリを載せたいだけだったら

  AndroidManifest.xmlにintent-filterを書くだけでいいようですね^^

 第一の目標があっさり達成できたのはいいけど、内容の薄い記事になりましたwww

 

 intent-filterって、今回はブラウザの「共有」を受け取るパターンでしたが、他にも色々あるようです。

 名前にintentとつくからには、どこかから呼び出されて~の場合についての記述かと思いますが、最初にMainActivityのintent-filterを書き換えて怒られたように、アプリ起動時の挙動にもかかわってきたりするっぽい。


 アプリ起動したよ、っていうトリガーを受信していると考えるべきなのかな?

 

  次の暗黙的Intentの実験は「受け取ったものをどうにかする」に挑戦します!

 次回もまた、よろしくお願いします^^