Подтвердить что ты не робот

Запустить приложение для Android, когда ссылка используется в SMS

Я не знаю, пытались ли многие люди, но я пытаюсь создать приложение, которое требует, чтобы пользователь нажал ссылку на sms, который он/она получает, и это запустит приложение для Android. Можно ли это сделать в android? Если да, как я могу это сделать? Я знаю, что это можно сделать в IOS. Любые предложения или помощь будут оценены. Спасибо.

4b9b3361

Ответ 1

В Манифесте под Управлением, которое вы хотите обрабатывать входящие данные из ссылки, нажатой в приложении обмена сообщениями, определите что-то вроде этого:

<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="" вот что гарантирует, что Activity будет реагировать на любые данные с этим в нем:

<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("@", "");

Я использую это для обработки кликов по твиттерам @username в моем приложении. Мне нужно разделить com.some_thing.profile:// и @, чтобы получить имя пользователя для дальнейшей обработки. Код манифеста, то же самое (только с измененными name и scheme).

Ответ 2

Добавьте фильтр намерений в ваше приложение, которое прослушивает ссылки, которые следуют за форматом, в котором вы хотите, чтобы ваше приложение было запущено.

Однако это будет глобальный слушатель, и любая ссылка, которая соответствует формату даже вне приложения SMS, вызовет ваше приложение. Поэтому, если пользователь удаляет аналогичную ссылку в веб-браузере, ваше приложение попытается ответить на него.

Кроме того, если есть другое приложение, кроме вашего, которое может обрабатывать эту ссылку, Android создаст выборщик, который позволит пользователю выбрать любое приложение, которое они хотят использовать. Вы ничего не можете с этим поделать, за исключением того, что пользователь делает ваше приложение обработчиком по умолчанию для таких ссылок.

Ответ 3

  <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 здесь.