I have a simple android app that opens a webview to call a web application.
I want to close the entire android app when the web application has a window.close();
I also want the back key to navigate back through the web pages, and that is working.
The window is closing, but the application is not closing and the log is not being updated. I think the onWindowClose is not being triggered for some reason.
This is my android app -
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
protected static final String TAG = null;
private WebView webView;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(webView.canGoBack()){
webView.goBack();
}else{
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Map<String,String> extraHeaders = new HashMap<String, String>();
extraHeaders.put("X-Requested-With", "MY-App");
//webview use to call own site
webView = (WebView) findViewById(R.id.webView1);
webView.setWebViewClient(new WebViewClient()); //use to hide the address bar
webView .getSettings().setJavaScriptEnabled(true);
webView .getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView .getSettings().setDomStorageEnabled(true); //to store history
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.Google.com",extraHeaders);
WebChromeClient wbc = new WebChromeClient(){
public void onCloseWindow(WebView webView){
super.onCloseWindow(webView);
Log.d(TAG, "Window trying to close");
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
};
webView.setWebChromeClient(wbc);
;
}
Here is the Manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.google"
android:versionCode="1"
android:versionName="1.0"
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/Google"
android:theme="@style/AppTheme"
android:noHistory="true"
android:excludeFromRecents="true"
>
<activity
android:name="com.example.google.MainActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>'
Thanks for all your help!