public class WebViewActivity extends Activity {
private WebView mWebView = null;
private WebViewInterface mWebViewInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
String uri = getIntent().getStringExtra("uri");
mWebView = (WebView)findViewById(R.id.webview);
mWebViewInterface = new WebViewInterface(WebViewActivity.this, mWebView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setVerticalScrollbarOverlay(true);
mWebView.addJavascriptInterface(mWebViewInterface, "AppInterface");
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.loadUrl(uri);
}
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
Toast.makeText(this, "previous", 500).show();
} else {
super.onBackPressed();
}
}
}
public class WebViewInterface {
private WebView mAppView;
private Activity mContext;
public WebViewInterface(Activity activity, WebView view) {
mAppView = view;
mContext = activity;
}
@JavascriptInterface
public void toast(String text) {
HToast.ShowToastLong(text);
mContext.finish();
}
}
WebViewActivity 에서 WebView 를 띄우고 구현 해 놓은 WebViewInterface 을 호출해서 웹뷰에서 자바스크립트로
웹뷰가 떠있는 액티비티를 죽이는 코드를 구현해놨습니다. (기존 엑티비티에서 웹뷰 액티비티를 불러온 것입니다.)
헌데 아예 자바스크립트인터페이스가 먹히지가 않습니다.
그냥 예제 형식으로 MainActivity 에서 웹뷰 띄우고 하면 잘 되는데 기존 앱에 소스를 추가해 동작시키면
자바스크립트가 먹통이 됩니다.
웃긴것은 디버깅 모드로 돌리면 또 돌아간다는 사실입니다;; 블루스택에서도 잘 돌아갑니다;
대체 뭐가 문젠지 모르겠네요...
아, 그리고 팝업 뜰때의 기존 앱과 예제 앱의 팝업 디자인이 다릅니다. 타겟 SDK 도 같은데 왜 이러는지 모르겠습니다;

이게 기존 앱의 웹뷰 다이얼로그 팝업입니다.

이게 예제 앱의 웹뷰 다이얼로그 팝업입니다.
대체 무슨 차인지 모르겠습니다. 도와주세요 ㅠㅠ