web-dev-qa-db-ja.com

リンクがタップされたときにAndroidアプリを起動SMS

多くの人がこれを試したかどうかはわかりませんが、ユーザーが受信したSMSのリンクをタップする必要があるアプリを作成しようとしています。これにより、Androidアプリが起動します。 。Androidで実行することは可能ですか?はいの場合、どうすればこれを実行できますか?これはIOSで実行できることを知っています。提案やヘルプがあれば幸いです。ありがとうございます。

14
nishantvodoo

マニフェストで、メッセージングアプリでクリックされたリンクからの受信データを処理するアクティビティの下で、次のように定義します。

<activity Android:name=".SomeActivityName" >

    <intent-filter>
        <category Android:name="Android.intent.category.DEFAULT" />
        <action Android:name="Android.intent.action.VIEW" />
        <data Android:scheme="com.your_package.something" />
    </intent-filter>

</activity>

ここでのAndroid:scheme=""は、アクティビティがこれを含むすべてのデータに反応することを保証するものです。

<data Android:scheme="com.your_package.something" />

SomeActivityName例として使用されている名前。当然、独自の名前を使用します:-))、チェックを実行できますこのような:

Uri data = getIntent().getData();
String strData = data.toString();
if (strScreenName.equals("com.your_package.something://"))  {
    // THIS IS OPTIONAL IN CASE YOU NEED TO VERIFY. THE ACTUAL USAGE IN MY APP IS BELOW THIS BLOCK
}

私のアプリの同様の使用法:

Uri data = getIntent().getData();
strScreenName = data.toString()
        .replaceAll("com.some_thing.profile://", "")
        .replaceAll("@", "");

これを使用して、Twitterのクリックを処理します@ usernameアプリ内のリンク。さらに処理するためにユーザー名を取得するには、com.some_thing.profile://@を削除する必要があります。マニフェストコードはまったく同じです(nameschemeだけが変更されています)。

13
Siddharth Lele

intent-filter をアプリに追加して、アプリを起動する形式に従うリンクをリッスンします。

ただし、これはグローバルリスナーになり、SMSアプリの外部でもフォーマットに適合するリンクはアプリをトリガーします。したがって、ユーザーがWebブラウザーで同様のリンクをタップすると、アプリはそれに応答しようとします。

さらに、このリンクを処理できるアプリが他にある場合、Androidは、ユーザーが使用したいアプリを選択できるチューザーを作成します。これについては何もできません。ただし、ユーザーがアプリをそのようなリンクのデフォルトハンドラーにすることを提案する場合を除きます。

5
Raghav Sood
  <intent-filter>
        <category Android:name="Android.intent.category.DEFAULT" />
        <action Android:name="Android.intent.action.VIEW" />
        <category Android:name="Android.intent.category.BROWSABLE"
        <data Android:scheme="https" Android:Host="${hostName}" Android:pathPattern="/.*" />
  </intent-filter>

以前の回答は問題ありませんが、パターンを指定することを忘れないでください。

詳細はこちらをご覧ください。

また、次のようにGradleファイル内でホスト名を定義します。

Android {
    defaultConfig {
        manifestPlaceholders = [hostName:"subdomain.example.com"]
    }
}

manifestPlaceholdersの詳細はこちら

0
Rammgarot