mirror of
https://github.com/bitwarden/android.git
synced 2024-11-01 07:35:52 +03:00
target android sdk 26 with fixes to HybridWebView
This commit is contained in:
parent
144d932591
commit
9593f330db
2 changed files with 24 additions and 13 deletions
|
@ -7,7 +7,6 @@ using Android.Webkit;
|
||||||
using AWebkit = Android.Webkit;
|
using AWebkit = Android.Webkit;
|
||||||
using Java.Interop;
|
using Java.Interop;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Plugin.CurrentActivity;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(HybridWebView), typeof(HybridWebViewRenderer))]
|
[assembly: ExportRenderer(typeof(HybridWebView), typeof(HybridWebViewRenderer))]
|
||||||
namespace Bit.Android.Controls
|
namespace Bit.Android.Controls
|
||||||
|
@ -16,9 +15,13 @@ namespace Bit.Android.Controls
|
||||||
{
|
{
|
||||||
private const string JSFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
|
private const string JSFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
|
||||||
|
|
||||||
|
private readonly Context _context;
|
||||||
|
|
||||||
public HybridWebViewRenderer(Context context)
|
public HybridWebViewRenderer(Context context)
|
||||||
: base(context)
|
: base(context)
|
||||||
{ }
|
{
|
||||||
|
_context = context;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
|
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
|
||||||
{
|
{
|
||||||
|
@ -26,8 +29,9 @@ namespace Bit.Android.Controls
|
||||||
|
|
||||||
if(Control == null)
|
if(Control == null)
|
||||||
{
|
{
|
||||||
var webView = new AWebkit.WebView(CrossCurrentActivity.Current.Activity);
|
var webView = new AWebkit.WebView(_context);
|
||||||
webView.Settings.JavaScriptEnabled = true;
|
webView.Settings.JavaScriptEnabled = true;
|
||||||
|
webView.SetWebViewClient(new JSWebViewClient(string.Format("javascript: {0}", JSFunction)));
|
||||||
SetNativeControl(webView);
|
SetNativeControl(webView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,15 +46,6 @@ namespace Bit.Android.Controls
|
||||||
{
|
{
|
||||||
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
|
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
|
||||||
Control.LoadUrl(Element.Uri);
|
Control.LoadUrl(Element.Uri);
|
||||||
InjectJS(JSFunction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InjectJS(string script)
|
|
||||||
{
|
|
||||||
if(Control != null)
|
|
||||||
{
|
|
||||||
Control.LoadUrl(string.Format("javascript: {0}", script));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,5 +69,21 @@ namespace Bit.Android.Controls
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class JSWebViewClient : WebViewClient
|
||||||
|
{
|
||||||
|
private readonly string _javascript;
|
||||||
|
|
||||||
|
public JSWebViewClient(string javascript)
|
||||||
|
{
|
||||||
|
_javascript = javascript;
|
||||||
|
|
||||||
|
}
|
||||||
|
public override void OnPageFinished(AWebkit.WebView view, string url)
|
||||||
|
{
|
||||||
|
base.OnPageFinished(view, url);
|
||||||
|
view.EvaluateJavascript(_javascript, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.x8bit.bitwarden" android:versionName="1.19.4" android:installLocation="auto" android:versionCode="502" xmlns:tools="http://schemas.android.com/tools">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.x8bit.bitwarden" android:versionName="1.19.4" android:installLocation="auto" android:versionCode="502" xmlns:tools="http://schemas.android.com/tools">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="26" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.NFC" />
|
<uses-permission android:name="android.permission.NFC" />
|
||||||
|
|
Loading…
Reference in a new issue