Как запустить стороннее приложение с их URL с помощью смс на Android? - PullRequest
0 голосов
/ 27 апреля 2020

Я думал об использовании AWS Simple Notification Service (SNS) для отправки текстов. Я делаю что-то, что отправляет текстовое сообщение, чтобы вооружить SimpliSafe, когда он думает, что я вышел из дома. Я хочу сделать ссылку, чтобы, если кто-то нажимает на нее, она открывает приложение SimpliSafe. Однако применяются только автоматические ссылки для веб-адресов и других вещей, поэтому я не могу использовать intent:///. Похоже, что URL https://simplisafe.com/sn/..* запустит действие следующим образом:

            <intent-filter
                android:autoVerify="true">
                <data
                    android:scheme="https"
                    android:host="simplisafe.com"
                    android:pathPattern="/sn/..*"/>
                <category
                    android:name="android.intent.category.BROWSABLE"/>
                <category
                    android:name="android.intent.category.DEFAULT"/>
                <action
                    android:name="android.intent.action.VIEW"/>
            </intent-filter>

Хотя я не понимаю, что это значит. Это регулярное выражение? Как мне вызвать это? Пока что, если я сделаю пример запроса к https://simplisafe.com/sn/..* или к чему-либо вместо ..*, с curl это выдаст мне ошибку 302 Moved Temporarily. Если я сделаю пример запроса к https://simplisafe.com/sn/index.html с помощью curl, это выдаст мне ошибку 404 Not Found. Если я открою этот URL из своего браузера, как если бы он открылся из текста, откроется магазин Google Play. Как мне сделать так, чтобы оно открывало приложение вместо Play Store?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Сначала настройте его в AndroidManifest. xml, добавьте фильтр намерений к соответствующему действию следующим образом:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="paraches" />
            </intent-filter>
            </activity>
    </application>

Затем добавьте соответствующий код синтаксического анализа к соответствующему действию следующим образом. :

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        String action = intent.getAction();
        if (Intent.ACTION_VIEW.equals(action)) {
            Uri uri = intent.getData();
            if (uri != null) {
                String host = uri.getHost();
                String dataString = intent.getDataString();
                String id = uri.getQueryParameter("id");
                String path = uri.getPath();
                String path1 = uri.getEncodedPath();
                String queryString = uri.getQuery();
                Log.d("Alex", "host:"+host);
                Log.d("Alex", "dataString:" + dataString);
                Log.d("Alex", "id:" + id);
                Log.d("Alex", "path:" + path);
                Log.d("Alex", "path1:" + path1);
                Log.d("Alex", "queryString:" + queryString);
            }
        }
    }

Посмотрите на Журнал следующим образом:

host:schemedemo
dataString:paraches://schemedemo/get/info?id=10000
id:10000
path:/get/info
path1:/get/info
queryString:id=10000
0 голосов
/ 27 апреля 2020

Оказывается, когда я запускаю его из браузера, он сначала не выполняет поиск доступных приложений. Страница SimpliSafe предназначена для этого, поэтому она знает, что лучший вариант - отправить меня в Play Store. Если бы я на самом деле проверил его с помощью текстового сообщения, то обнаружил бы, что оно открывает приложение SimpliSafe.

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