Skip to content

Commit

Permalink
Merge pull request #3 from yellowmessenger/MA-900_crash_fix
Browse files Browse the repository at this point in the history
Crash handling
  • Loading branch information
sukrit-ym authored Feb 16, 2022
2 parents cb3f51e + b1cd2bc commit 6687fc6
Showing 1 changed file with 37 additions and 42 deletions.
79 changes: 37 additions & 42 deletions ymwebview/src/main/java/com/example/ymwebview/WebviewOverlay.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
package com.example.ymwebview;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Message;
import android.util.Log;
import android.webkit.ConsoleMessage;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
Expand All @@ -29,6 +24,10 @@
import android.widget.FrameLayout;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.ymwebview.models.ConfigDataModel;
import com.example.ymwebview.models.JavaScriptInterface;
import com.google.gson.Gson;
Expand All @@ -42,7 +41,7 @@

import static android.app.Activity.RESULT_OK;

public class WebviewOverlay extends Fragment {
public class WebviewOverlay extends Fragment {
private final String TAG = "YM WebView Plugin";
private WebView myWebView;

Expand All @@ -55,7 +54,6 @@ public class WebviewOverlay extends Fragment {
private static final int FILECHOOSER_RESULTCODE = 1;



@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Expand All @@ -65,7 +63,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
}


public void closeBot(){
public void closeBot() {
myWebView.loadUrl("");
}

Expand Down Expand Up @@ -144,10 +142,7 @@ public void onResume() {
}





private File createImageFile() throws IOException {
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
Expand All @@ -167,13 +162,10 @@ public void onPause() {
}




public View preLoadWebView() {
// Testing API call.



// Preload start
final Context context = getActivity();
String botId = ConfigDataModel.getInstance().getConfig("botID");
Expand All @@ -182,7 +174,7 @@ public View preLoadWebView() {
String enableHistory = ConfigDataModel.getInstance().getConfig("enableHistory");
myWebView = new WebView(context);
Log.d(TAG, getString(R.string.chatbot_base_url));
final String botUrl = getString(R.string.chatbot_base_url)+"?botId=" + botId + "&enableHistory=" + enableHistory + "&ym.payload=" + payloadJSON;
final String botUrl = getString(R.string.chatbot_base_url) + "?botId=" + botId + "&enableHistory=" + enableHistory + "&ym.payload=" + payloadJSON;


Log.d(TAG, "onCreate: " + botUrl);
Expand All @@ -207,6 +199,7 @@ public View preLoadWebView() {
private WebChromeClient.CustomViewCallback mCustomViewCallback;
private int mOriginalOrientation;
private int mOriginalSystemUiVisibility;

@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
Log.d("WebView", consoleMessage.message());
Expand Down Expand Up @@ -249,7 +242,7 @@ public boolean onShowFileChooser(WebView view, ValueCallback<Uri[]> filePath, We
contentSelectionIntent.setType("*/*");

String hideCameraForUpload = ConfigDataModel.getInstance().getConfig("hideCameraForUpload");
if(Boolean.parseBoolean(hideCameraForUpload)){
if (Boolean.parseBoolean(hideCameraForUpload)) {
takePictureIntent = null;
}

Expand Down Expand Up @@ -306,10 +299,10 @@ public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
Intent chooserIntent = Intent.createChooser(i, "Image Chooser");

String hideCameraForUpload = ConfigDataModel.getInstance().getConfig("hideCameraForUpload");
if(!Boolean.parseBoolean(hideCameraForUpload)){
if (!Boolean.parseBoolean(hideCameraForUpload)) {
// Set camera intent to file chooser
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS
, new Parcelable[] { captureIntent });
, new Parcelable[]{captureIntent});
}


Expand All @@ -331,36 +324,32 @@ public void openFileChooser(ValueCallback<Uri> uploadMsg,
openFileChooser(uploadMsg, acceptType);
}

public Bitmap getDefaultVideoPoster()
{
public Bitmap getDefaultVideoPoster() {
if (mCustomView == null) {
return null;
}
return BitmapFactory.decodeResource(context.getResources(), 2130837573);
}

public void onHideCustomView()
{
((FrameLayout)getActivity().getWindow().getDecorView()).removeView(this.mCustomView);
public void onHideCustomView() {
((FrameLayout) getActivity().getWindow().getDecorView()).removeView(this.mCustomView);
this.mCustomView = null;
getActivity().getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
getActivity().setRequestedOrientation(this.mOriginalOrientation);
this.mCustomViewCallback.onCustomViewHidden();
this.mCustomViewCallback = null;
}

public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
{
if (this.mCustomView != null)
{
public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
if (this.mCustomView != null) {
onHideCustomView();
return;
}
this.mCustomView = paramView;
this.mOriginalSystemUiVisibility = getActivity().getWindow().getDecorView().getSystemUiVisibility();
this.mOriginalOrientation = getActivity().getRequestedOrientation();
this.mCustomViewCallback = paramCustomViewCallback;
((FrameLayout)getActivity().getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
((FrameLayout) getActivity().getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
getActivity().getWindow().getDecorView().setSystemUiVisibility(3846 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}

Expand All @@ -374,9 +363,15 @@ public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGest
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
if (url != null && !url.isEmpty()) {
try {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
} catch (Exception e) {
// Exception occurred
}
}
return true;
}
});
Expand All @@ -390,9 +385,9 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
}


public void sendEvent(String s){
Log.d("Sending Event: ", s);
myWebView.loadUrl("javascript:sendEvent(\""+s+"\");");
public void sendEvent(String s) {
Log.d("Sending Event: ", s);
myWebView.loadUrl("javascript:sendEvent(\"" + s + "\");");
}
// @Override
// public void onPageStarted(String url, Bitmap favicon) {
Expand Down

0 comments on commit 6687fc6

Please sign in to comment.