Открытие / запуск определенного действия Android с передачей параметра намерения из браузера - PullRequest
0 голосов
/ 10 ноября 2018

Я занимаюсь разработкой приложения для Android и веб-сайта. Сейчас я пытаюсь открыть определенную активность приложения Android из браузера, когда пользователь нажимает на ссылку.

Это мой класс активности Android

class SphereViewerActivity : AppCompatActivity(){
   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sphere_viewer)
        intent.getStringExtra("image_url")

    }
}

Как вы можете видеть из моего кода, я получаю параметр image_url из браузера. Можно ли открыть это действие, передав параметр из JavaScript или браузера?

Я нашел решение, оно должно иметь такую ​​ссылку

<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end"> Take a QR code </a>

Но как передать данные о намерениях в качестве параметра?

Я попытался добавить ссылки на приложение. не работает, когда я нажимаю Test App Links

enter image description here

1 Ответ

0 голосов
/ 10 ноября 2018

У вас есть 4 варианта достижения желаемого:

  1. Глубокие ссылки
  2. Ссылки на приложения для Android
  3. Динамические ссылки Firebase
  4. Индексирование приложений Firebase

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

В простейшем подходе (Deep Links) вы можете представить Activity в качестве обработчика определенного шаблона URL s и передать нужные параметры в виде URL параметров запроса.

AndroidManifest.xml

<activity android:name=".SphereViewerActivity">

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- Accepts URIs that begin with "myapp://zxing" -->
        <data android:host="zxing" />
        <data android:scheme="myapp" />
    </intent-filter>

</activity>

SphereViewerActivity.kt

class SphereViewerActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sphere_viewer)

        if (intent != null && intent.action == Intent.ACTION_VIEW) {
            intent.data?.apply{
                if (getQueryParameter("image_url") != null && getQueryParameter("image_url").isNotEmpty()) {
                    val imageUrl = data.getQueryParameter ("image_url") as String
                    // do what you want to do with imageUrl
                }
            }
        }
    }
}

Ваш HTML-фрагмент:

<a href="myapp://zxing?image_url=some_image_url"> Take a QR code </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...