2017-01-07 4 views
1

Я работаю над внутренним приложением для своей компании. Использование Android Studio 2.2.3 в качестве среды разработки и AVD Emulator с виртуальным устройством Android 6.0 для тестирования.Запуск приложения для Android из WEB-браузера

У нас есть веб-приложение, которое мы используем для создания счетов-фактур. В Android-приложении в основном необходимо получить номер счета-фактуры, затем он считывает данные счета из веб-службы и печатает на принтер Bluetooth.

Так в основном, я попробовал это 2 ссылки в моем веб-приложение:

<a href="company.printapp://INVOICE/1621696">PRINT INVOICE</a></div> 
<a href="intent://INVOICE/1621696/#Intent;scheme=company.printapp;end">PRINT INVOICE</a> 

И бросить ту же ошибку в браузере (тестирование в эмуляторе):

net:ERR_UNKNOWN_URL_SCHEME 

Мои манифеста файл выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="company.printapp"> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <data android:scheme="company.printapp" /> 
       <action android:name="android.intent.category.BROWSABLE" /> 
       <action android:name="android.intent.action.VIEW" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

MainActivity.java:

package company.printapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import java.util.List; 
import android.net.Uri; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Uri data = getIntent().getData(); 
     String scheme = data.getScheme(); 
     String host = data.getHost(); 
     List<String> params = data.getPathSegments(); 
     String first = params.get(0); // "document type" 
     String second = params.get(1); // "document No" 
     BluetoothPrint(first,second);  
    } 
} 

Есть ли решение, которое будет работать как в браузере Chrome, так и в Android по умолчанию? Если нет, мне нужно, чтобы он работал как минимум с Chrome.

ответ

1

Guess я получил свой ответ после еще некоторые исследований:

Он работает только в Google Chrome, но делает работу в моем случае:

Ссылка должна выглядеть как:

<a href="intent://invoice/#Intent;scheme=company;package=company.printapp;S.doctype=FRA;S.docno=FRA1234;S.browser_fallback_url=http%3A%2F%2Fgoogle.com;end">PRINT INVOICE</a> 

В AndroidManifest.xml важная часть:

... 

package="company.printapp" 
... 

<!-- Allow web apps to launch My App --> 
      <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="company" android:host="invoice" android:path="/"/> 
      </intent-filter> 

И, наконец, вот как я получить параметры, которые я передаю в ссылке Intent (doctype и docno):

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Bundle parametros = getIntent().getExtras(); 
     if (parametros != null){ 
      String Doctype = parametros.getString("doctype"); 
      String DocNo = parametros.getString("docno"); 
      TextView textView = (TextView) findViewById(R.id.DocNo); 
      textView.setText(DocNo); 
      BluetoothPrint(Doctype,DocNo); 
     } 
    } 
Смежные вопросы