gpt4 book ai didi

android - 从 WEB 浏览器启动 Android 应用程序

转载 作者:行者123 更新时间:2023-11-29 15:40:21 31 4
gpt4 key购买 nike

我正在为我的公司开发一个内部应用程序。使用Android Studio 2.2.3作为开发环境,AVD Emulator配合Android 6.0虚拟设备进行测试。

我们有一个用于创建销售发票的 Web 应用程序。 Android 应用基本上需要接收发票编号,然后从 Web 服务读取发票数据,并打印到蓝牙打印机。

基本上,我已经在我的网络应用程序中尝试了这 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

我的 list 文件如下所示:

<?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>

主要 Activity .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 一起使用。

最佳答案

经过更多研究,我猜我得到了自己的答案:

它只适用于谷歌浏览器,但在我的情况下可以:

链接应该是这样的:

<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);
}
}

关于android - 从 WEB 浏览器启动 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523999/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com