web-dev-qa-db-ja.com

電話アプリは私のクリップボードを読み取ることができますか?

ハッカーニュース を介して、私は ツイート に遭遇しました。これは、FacebookのiOSアプリがユーザーのペーストボードからすべてのコンテンツを定期的に読み取り、送信することを意味します。

Facebookのアプリが本当にこれを行うかどうかは別として(これは別の質問です)、これは可能ですか?私は、ネイティブのテキストビューに「貼り付け」を明示的に選択しない限り、クリップボードにあるものにアプリがアクセスできないことを常に単純に想定していました。その仮定は間違っていますか? 2つの主要な電話OSのクリップボードのコンテンツのセキュリティモデルは何ですか? (または、iOSとAndroidで異なる方法で処理される場合、セキュリティモデルは何ですか?)

82
Mark Amery

Android

はい、Androidで可能です。どのアプリ/サービスでもクリップボードデータを読み取ることができます。実際、オンラインで多くのコードがあり、バックグラウンドでリスナーを使用して実行するサービスを作成します。これにより、クリップボードのコンテンツが変更されるたびにコンテンツとともにアプリに通知されます。

この機能を使用しているAndroidアプリがいくつかわかっています。1つはTruecallerです。連絡先番号がコピーされると、画面上のオーバーレイに電話番号の所有者の名前が表示されます。もう1つはGoogle翻訳:文を1つまたは2つコピーすると、画面にフローティングアイコンが表示され、クリックすると、コピーしたテキストを別の言語に翻訳するオプションが表示されます。

参考のために、Stack Overflowの example を示します。

iOS

ser 11684 によるコメントで確認されているように、Appleを使用すると、アプリはクリップボードを読み取ることができます(ただし、フォアグラウンドにある間のみです)。ここへのリンクは documentation は、クリップボードのデータを返します。

85
pri

アプリがいつでもクリップボードのコンテンツをチェックすることは間違いなく可能です。

例:リンクをコピーしてからChromeを開きます。検索バーにリンクが表示されます(「コピーしたリンクに移動」)。リンクではないものをコピーした場合、その申し出は行われません。これは、明示的なユーザーアクションなしでクリップボードをチェックすることを証明します。

7
Aganju