Skip to content
This repository has been archived by the owner on May 19, 2023. It is now read-only.

Commit

Permalink
Changes to support fileInput control capability 'out-of-the-box' in W…
Browse files Browse the repository at this point in the history
…ebView control. Basically, use the AdvancedWebView which supports this functionality where the default WebView does not.
  • Loading branch information
jstorq committed Dec 18, 2020
1 parent 80da580 commit 08488dd
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 16 deletions.
4 changes: 3 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,8 @@
<meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="barcode"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@

import org.json.JSONObject;

import im.delight.android.webview.AdvancedWebView;

public class JasonHtmlComponent {

public static View build(View view, final JSONObject component, final JSONObject parent, final Context context) {
if(view == null){
try {
WebView webview = new WebView(context);
AdvancedWebView webview = new AdvancedWebView(context);
webview.getSettings().setDefaultTextEncodingName("utf-8");

return webview;
Expand All @@ -33,10 +34,10 @@ public static View build(View view, final JSONObject component, final JSONObject
String text = component.getString("text");
String html = text;
CookieManager.getInstance().setAcceptCookie(true);
((WebView) view).loadDataWithBaseURL("http://localhost/", html, "text/html", "utf-8", null);
((WebView) view).setWebChromeClient(new WebChromeClient());
((WebView) view).setVerticalScrollBarEnabled(false);
((WebView) view).setHorizontalScrollBarEnabled(false);
((AdvancedWebView) view).loadDataWithBaseURL("http://localhost/", html, "text/html", "utf-8", null);
((AdvancedWebView) view).setWebChromeClient(new WebChromeClient());
((AdvancedWebView) view).setVerticalScrollBarEnabled(false);
((AdvancedWebView) view).setHorizontalScrollBarEnabled(false);
WebSettings settings = ((WebView) view).getSettings();
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setJavaScriptEnabled(true);
Expand All @@ -62,12 +63,12 @@ public static View build(View view, final JSONObject component, final JSONObject
}
if(responds_to_webview){
// webview receives click
((WebView) view).setOnTouchListener(null);
((AdvancedWebView) view).setOnTouchListener(null);
// Don't add native listener to this component
} else {
// webview shouldn't receive click

((WebView)view).setOnTouchListener(new View.OnTouchListener() {
((AdvancedWebView)view).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
JSONObject component = (JSONObject)v.getTag();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@

import static com.bumptech.glide.Glide.with;

import im.delight.android.webview.AdvancedWebView;

public class JasonViewActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback{
private JasonToolbar toolbar;
private RecyclerView listView;
Expand All @@ -108,7 +110,7 @@ public class JasonViewActivity extends AppCompatActivity implements ActivityComp
public RelativeLayout rootLayout;
private ItemAdapter adapter;
public View backgroundCurrentView;
public WebView backgroundWebview;
public AdvancedWebView backgroundWebview;
public ImageView backgroundImageView;
private SurfaceView backgroundCameraView;
public JasonVisionService cameraManager;
Expand Down Expand Up @@ -559,6 +561,9 @@ protected void onResume() {
if(intent_to_resolve != null) {
if(intent_to_resolve.has("type")){
((Launcher)getApplicationContext()).trigger(intent_to_resolve, JasonViewActivity.this);
if (intent_to_resolve.get("type") == "success") {
backgroundWebview.onActivityResult(intent_to_resolve.getInt("name"), RESULT_OK, (Intent)intent_to_resolve.get("intent"));
}
intent_to_resolve = null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicReference;

import im.delight.android.webview.AdvancedWebView;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
Expand All @@ -47,10 +49,10 @@ public JasonAgentService() {
}
private class JasonAgentInterface {

private WebView agent;
private AdvancedWebView agent;
private Context context;

public JasonAgentInterface(WebView agent, Context context) {
public JasonAgentInterface(AdvancedWebView agent, Context context) {
this.agent = agent;
this.context = context;
}
Expand Down Expand Up @@ -284,7 +286,7 @@ public void postMessage(String json) {

}

public WebView setup(final JasonViewActivity context, final JSONObject options, final String id) {
public AdvancedWebView setup(final JasonViewActivity context, final JSONObject options, final String id) {

/**
Expand All @@ -305,7 +307,7 @@ public WebView setup(final JasonViewActivity context, final JSONObject options,
NO => Ignore
**/
WebView agent;
AdvancedWebView agent;


/*******************************************
Expand All @@ -321,7 +323,7 @@ public WebView setup(final JasonViewActivity context, final JSONObject options,
try {
// An agent with the ID already exists
if (context.agents.has(id)) {
agent = (WebView) context.agents.get(id);
agent = (AdvancedWebView) context.agents.get(id);

// No such agent exists yet. Create one.
} else {
Expand All @@ -332,7 +334,7 @@ public WebView setup(final JasonViewActivity context, final JSONObject options,

// 2.1. Initialize
CookieManager.getInstance().setAcceptCookie(true);
agent = new WebView(context);
agent = new AdvancedWebView(context);
agent.getSettings().setDefaultTextEncodingName("utf-8");

if (id.startsWith("$webcontainer")) {
Expand Down Expand Up @@ -586,7 +588,7 @@ public void onFinished(JSONObject reduced_action) {
}

} catch (Exception e) {
agent = new WebView(context);
agent = new AdvancedWebView(context);
Log.d("Warning", e.getStackTrace()[0].getMethodName() + " : " + e.toString());
}
return agent;
Expand Down

0 comments on commit 08488dd

Please sign in to comment.