Я не знаю, пробовали ли это многие люди, но я пытаюсь создать приложение, которое требует, чтобы пользователь нажимал ссылку в полученном sms, и это запустит приложение для Android. А в андроиде можно сделать? Если да, то как я могу это сделать? Я знаю, что это можно сделать в iOS. Мы будем благодарны за любые предложения или помощь. Спасибо.
Запускать приложение для Android при нажатии на ссылку в SMS
Ответы (3)
В вашем манифесте под действием, которое вы хотите обрабатывать входящие данные от ссылки, нажатой в приложении для обмена сообщениями, определите что-то вроде этого:
<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("@", "");
Я использую это для обработки кликов по ссылкам twitter @username в моем приложении. Мне нужно удалить com.some_thing.profile://
и @
, чтобы получить имя пользователя для дальнейшей обработки. Код манифеста точно такой же (с измененными только name
и scheme
).
if (strData.equals
вместо if (strScreenName.equals
- person user2342558; 05.03.2021
Добавьте в свое приложение фильтр намерений, который прослушивает ссылки, следующие за формат, в котором вы хотите, чтобы ваше приложение запускалось.
Однако это будет глобальный прослушиватель, и любая ссылка, которая соответствует формату даже за пределами приложения SMS, будет запускать ваше приложение. Поэтому, если пользователь нажимает аналогичную ссылку в веб-браузере, ваше приложение попытается ответить на нее.
Кроме того, если есть другое приложение, помимо вашего, которое может обрабатывать эту ссылку, Android создаст средство выбора, которое позволяет пользователю выбрать любое приложение, которое он хочет использовать. Вы ничего не можете с этим поделать, кроме как предложить пользователю сделать ваше приложение обработчиком таких ссылок по умолчанию.
<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
здесь.