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

Как передать параметры для Android-намерения в новой схеме на хром?

У меня есть веб-приложение, вызывающее собственное приложение на Android с помощью намерения iframe, которое не работает в chrome 25 в соответствии со следующим....

https://developers.google.com/chrome/mobile/docs/intents

Цель была структурирована следующим образом:

Приложение://ТипЗапроса = Тестирование & Type = 123 & т = 0000000000

В новом намерении://схема, как я могу перейти к параметрам, перечисленным после приложения://к собственному приложению? Я не смог найти пример.

4b9b3361

Ответ 1

С помощью новой схемы вы можете передавать аргументы как дополнительные приложения, но вы должны кодировать URI следующим образом:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.myextra=mystring;end">Do Whatever</a>

Это передаст дополнительную строку, называемую "myextra" со значением "mystring". Взглянув на код Android, мы можем видеть, как нужно кодировать дополнительные параметры. " S" в начале параметра "myextra" определяет его как строку. Другие типы могут быть:

String => 'S'
Boolean =>'B'
Byte => 'b'
Character => 'c'
Double => 'd'
Float => 'f'
Integer => 'i'
Long => 'l'
Short => 's'

Например, если мы хотим передать два дополнительных параметра, Integer и String, мы можем это сделать:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.name=Perico%20de%20los%20Palotes;i.age=35;end">Do Whatever</a>

Обратите внимание, что вам нужно будет закодировать url все параметры.

В вашем приложении для Android вам необходимо принять эти дополнительные функции. В событии onCreate вашей деятельности:

Bundle parametros = getIntent().getExtras();
if (extras != null){
    String name = extras.getString("name");
    Integer age = extras.getInt("age");

    if (name!=null && age!=null)
    {
       //do whatever you have to
       //...
    }
}else{
     //no extras, get over it!!
}

И, конечно, добавьте в ваш манифест фильтр android.intent.category.BROWSABLE, как показано в эта ссылка.

Ответ 2

Для URL схемы:

appname://RequestType/?Type=123&tn=0000000000

Вы хотели бы отобразить URL-адрес намерения:

intent://RequestType/?Type=123&tn=0000000000#Intent;scheme=appname;package=com.example.appname;end

Ответ 3

Умения не работают после 4.4.4, поэтому это то, что я делаю для своего приложения.

создала пользовательскую схему для запуска моей активности в AndroidManifest.xml со следующим фильтром намерений

1)

 <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="<<YOUR UNIQUE SCHEME(I SUGGEST YOUR PACKAGE NAME)"/>
</intent-filter>

2) Создайте рыночный URL-адрес с резервным URL-адресом, который открывает ваше приложение через пользовательскую схему, созданную выше.

market://details?id=<<your app package from AndroidManifest.xml>>&url=<<your app custom scheme from AndroidManifest.xml>>://yourdomain.com?encoded(p1=v1&p2=v2....etc)

это откроет магазин, если ваше приложение не установлено, и открывает приложение с данными намерения, если приложение уже установлено, с вашими декодированными параметрами.

Надеюсь, что это поможет

Ответ 4

Вы больше не можете использовать iframe и собственный протокол, чтобы открыть собственное приложение.

Однако вы можете использовать существующий намерение://синтаксис для запуска и намерения и передачи его данных, он имеет дополнительное преимущество для пользователь в Play Store, если он не установлен.

Вы либо кодируете данные в "пути" части синтаксиса, как указано в документе, так что у вас может быть intent://play/?a=1#Intent;......;end; или вы можете закодировать его как Экстра.