Androidの共有メニューに出てくる”Direct Share”を無効化する方法 (要root)

この記事の賞味期限は切れています。掲載内容や情報が古い可能性があります。

Androidの共有メニューに出てくる"Direct Share"を無効化する方法 (要root)

Android 6.0から導入された”Direct Share (ダイレクトシェア)”を無効化する方法を紹介します。

インテントファイアウォールで無効化

“Direct Share”とは、共有メニューでアプリにデータを渡すだけでなく、アプリ内にある連絡先などを選んで直接共有できる機能です。

例えばChromeで共有ボタンを押したとき、チャットアプリに登録した人を選んで共有するとその人に直接URLを書いたメッセージを送れます。

…ただ、普段から知人に共有することが多い人であれば便利でしょうが、めったに使わない人に取っては邪魔でしかありません。

Googleドライブのフォルダも表示されますが、普段よく使うフォルダが表示されるわけでもないので、普通にGoogle ドライブへ保存する方がフォルダを自由に選べて便利です。

幸い、この”Direct Share”はインテントファイアウォールと呼ばれる隠し機能で無効化できます。

無効化
無効化

インテントファイアウォールは/data/system/ifwにxmlファイルを置くことで有効化できるのですが、この操作にはroot権限が必要です。アップデートがある毎に書き換えるのは面倒なので、Magiskモジュールにしました。

ここからzipをダウンロードしてMagisk Managerでインストールし、再起動してください。

このモジュールは

<rules>
    <service block="true" log="true">
       <intent-filter>
          <action name="android.service.chooser.ChooserTargetService" />
       </intent-filter>
    </service>
</rules>

と書かれたDisableDirectShare.xmlを一旦/system/etcに配置し、/data/system/ifwにシンボリックリンクを作成します。(直接/data/system/ifwに置くとモジュールを無効化しても残り続けてしまうため)

 

インテントファイアウォールは公式にはドキュメントが用意されていない隠し機能なので、一部の端末では対応していないこともあります。Android 9 PieのPixel 2 XLにて動作確認しています。

元々この方法はredditで公開されたものですが、xmlを見て分かるとおり、Direct Shareをブロックする目的以外でも利用できます。

アプリは動かしたいけれどバックグラウンドで動くのを止めさせたい時や、共有メニューに出てきて欲しくないものを消す時に、対象のアクション名を調べて別途追加すればそのアクションをブロックできます。

また、下記のようにすればアクティビティもブロックできます。activityserviceに書き換えればサービスもブロックできます。

<rules>
    <activity block="true" log="false">
       <component-filter name="com.android.dialer/.DialtactsActivity" />
    </activity>
</rules>

はてブ Pocket Mastodon タイトルとURLをコピー

当サイトで紹介するMODやアプリなどの内、システムファイルの改変やシステムに深く関わるものはroot化やリカバリが必須となります(root化の必要なしと明記している場合は除く)。導入はバックアップを取ってから自己責任で行ってください。また、技適の無い機器の使用は自己責任です。