Android アプリケーションでは、多くの場合、アプリを選択してリンクを開くか、その他のアクションを実行するかの選択はユーザーに委ねられています。つまり、フレームワークにより、ユーザーは何かを実行するアプリを選択できます。
たとえば、ツイートへのリンクがあり、次のいずれかを選択できるとします。
- ツイッター
- クロム
- ウェブブラウザ
ネイティブ アプリケーションではなく、リンクを開くアプリケーションをユーザーが選択できる理由は何ですか?
Android アプリケーションでは、多くの場合、アプリを選択してリンクを開くか、その他のアクションを実行するかの選択はユーザーに委ねられています。つまり、フレームワークにより、ユーザーは何かを実行するアプリを選択できます。
たとえば、ツイートへのリンクがあり、次のいずれかを選択できるとします。
ネイティブ アプリケーションではなく、リンクを開くアプリケーションをユーザーが選択できる理由は何ですか?
これによると:
暗黙的インテントは、アクションを実行できるデバイス上の任意のアプリを呼び出すことができるアクションを指定します。暗黙的インテントの使用は、自分のアプリではアクションを実行できないが、他のアプリでは実行できる可能性が高く、使用するアプリをユーザーに選択してもらいたい場合に役立ちます。
そしてこれ:
インテントの真の力は、暗黙のインテントの概念にあります。暗黙的インテントは、実行するアクションのタイプ (およびオプションで、アクションを実行したいデータ) を単純に記述し、システムがアクションを実行して開始できるデバイス上のコンポーネントを見つけられるようにします。インテントによって記述されたアクションを実行できるコンポーネントが複数ある場合、ユーザーはどれを使用するかを選択します。
Android では、開発者は自分のアプリ内で同じ機能を再作成するのではなく、デバイス上の別のアプリを使用して何らかのタスクを実行できるようにすることができます。多くの場合、同じタスクを実行できるアプリが複数あるため、Android ではユーザーがそのタスクに使用するアプリを選択できます。
基本的に、フレームワークは、タスクを完了するための最も一般的な方法を提供しようとします。公式Twitter
アプリが存在しない場合は、常にChrome
.
これをコードで行う方法を次に示します。
Google は暗黙のインテントを導入しましたが、これらのインテントはあいまいであり、Google は人間にあいまいさを解決させることにしました。
場合によっては、ロボットが正しい選択をすることができません。たとえば、ロボットはどのアプリでリンクを開く必要があるかをリストからどのように決定できますか: Opera、Chrome、Web ブラウザー?
Twitter や Google 翻訳などのアプリは特定のリンクに適しているように見えるかもしれませんが、実際にはアプリにはグリッチがあります (アプリは自動的に更新されるためバグが入り込む可能性がありますが、サーバーの更新はアプリの更新を暗示しているため、バグが忍び寄る可能性があります)。自動更新がオフになっているデバイスでも)、ユーザーは専用アプリではなくブラウザーでリンクを開きたい場合があります。
基本的に、アプリケーションIntent
から送信した を処理するアプリケーションのリストを取得します。
たとえば、このインテントを作成すると
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
処理できるすべてのアプリケーションがIntent.ACTION_DIAL
選択リストに表示されます。あなたの場合、リンクを処理するとき、Twitter、Chrome、および Web Broswer はすべてこれらのインテントを処理できるアプリケーションであるため、選択リストに表示されます。
詳細については、こちらをご覧ください。