nativescript-android-advanced-webview
NativeScript Android 高级 Webview。
npm i --save nativescript-android-advanced-webview

npm npm

NativeScript Android 高级 Webview

此插件将允许您使用 Android Webview 的一些高级功能。此插件使用以下库

Android: Android-AdvancedWebView

注意: 我既不是 iOS 专家也不是 Android 专家。所以,如果您认为可以做出改进,请贡献力量 :)

安装

tns plugin add nativescript-android-advanced-webview

使用 (Angular)

import { registerElement } from "nativescript-angular";
registerElement("AdvanceWebview", () => require("nativescript-android-advanced-webview").AndroidAdvancedWebview);

ngAfterViewInit() {
let advanceWebview: AndroidAdvancedWebview = this.page.getViewById("webview");

let optons: AndroidAdvanceWebviewOptions = {
android: {
setGeolocationEnabled: false,
setCookiesEnabled: true,
}
}

advanceWebview.setWebviewOptions(optons);

advanceWebview.on("started", function (res) {
console.log("started");
console.dir(res);
})
advanceWebview.on("finished", function (res) {
console.log("finished");
console.dir(res);
})
}

HTML

<AdvanceWebview id="webview" src="https://google.com"></AdvanceWebview>

WebViewClient 或 WebChromeClient 类的高级配置。您需要实现自己的自定义覆盖方法。您几乎可以在这里做任何事情 :). 您可以安装 tns-platform-declarations 以避免 TypeScript 错误。请查看示例以获取更多详细信息。

advanceWebview.setUpWebViewClient(new MyWebViewTestClient()); //android.webkit.WebViewClient class
advanceWebview.setUpWebChromeClient(new MyWebChromeClient()); //android.webkit.WebChromeClient

类可以扩展如下

export class MyWebViewTestClient extends android.webkit.WebViewClient {

constructor() {
super();
return global.__native(this);
}
public onPageStarted(view: android.webkit.WebView, url: string, favicon: android.graphics.Bitmap): void {
console.log("onPageStarted: " + url);
}
public onPageFinished(view: android.webkit.WebView, url: string): void {
console.log("onPageFinished");
}
public onReceivedError(view: android.webkit.WebView, request, error): void {
console.log("onReceivedError");
}
}

export class MyWebChromeClient extends android.webkit.WebChromeClient {

constructor() {
super();
return global.__native(this);
}

public onReceivedTitle(view: android.webkit.WebView, title: string): void {
console.log(title);
}

public onPermissionRequest(request: any): void {
console.log("Permission asked !!");
request.grant(request.getResources());
}
}

API

事件: started, finished, error, downloadRequested, externalPageRequest

您可以通过扩展 WebViewClient 或 WebChromeClient 类来获取更多事件,如 onReceivedTitleonPermissionRequest(允许麦克风)等。此插件也有一些限制。您可以查看库存储库以获取更多详细信息。

android?: {
setGeolocationEnabled?: boolean;
addHttpHeader?: {
request: string;
value: string;
};
addPermittedHostname?: string;
preventCaching?: boolean;
setThirdPartyCookiesEnabled?: boolean;
setCookiesEnabled?: boolean;
setMixedContentAllowed?: boolean;
setDesktopMode?: boolean;
loadHtml?: boolean;
};

详细信息在这里: https://github.com/delight-im/Android-AdvancedWebView

许可证

MIT

作者: Jibon L. Costa