言いたいことはそれだけか

KotlinとかAndroidとかが好きです。調べたことをメモします。٩( 'ω' )و

AndroidでChromeの共有メニューにアプリを追加する

やりたいこと

AndroidChromeで共有メニューを選択した際に出てくるアプリ群に自作アプリを追加したい。
最終的にChromeで開いていたページのURLを自作アプリで受け取るのがゴール。

試したこと

まずは公式ドキュメントを参照。
Receiving Simple Data from Other Apps | Android Developers

Intent FilterをAndroidManifest.xml に登録します。
URLを受け取りたかっただけなのでmimeTypeがtextの物のみ指定。

サンプルを同様の記載をしたところ、Chromeの共有メニューにテストアプリのアイコンが無事出てきました。
ただし、これだとActivity名が表示されてしまうので、アプリ名に変えるためIntentFilterにlabelを指定します。
frameworksのこのへんのコードを参考にしました。
Cross Reference: /packages/apps/UnifiedEmail/AndroidManifest.xml

        <activity
            android:name=".YourActivity"
            android:label="@string/your_app_name_lable" >
            <intent-filter android:label="@string/your_app_name">
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>
        </activity>

次に上記で指定したActivity側のコード。URLを受け取る側です。
`Intent.EXTRA_TEXT にリンク情報が入っています。

    if (TextUtils.equals(getIntent().getAction(), Intent.ACTION_SEND)) {
      Bundle extras = getIntent().getExtras();
      String extraText = extras.getCharSequence(Intent.EXTRA_TEXT).toString();
      if (!TextUtils.isEmpty(extraText)) {
        doSomething(extraText);
      }
    }