mirror of
https://github.com/apache/cordova-android.git
synced 2026-02-21 00:02:46 +08:00
Experiments with 2.0 and backwards compatibility
This commit is contained in:
61
framework/src/com/phonegap/WebViewReflect.java
Normal file
61
framework/src/com/phonegap/WebViewReflect.java
Normal file
@@ -0,0 +1,61 @@
|
||||
package com.phonegap;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import android.webkit.WebSettings;
|
||||
|
||||
public class WebViewReflect {
|
||||
private static Method mWebSettings_setDatabaseEnabled;
|
||||
|
||||
static
|
||||
{
|
||||
checkCompatibility();
|
||||
}
|
||||
|
||||
private static void setDatabaseEnabled(boolean e) throws IOException {
|
||||
try
|
||||
{
|
||||
mWebSettings_setDatabaseEnabled.invoke(e);
|
||||
}
|
||||
catch (InvocationTargetException ite) {
|
||||
/* unpack original exception when possible */
|
||||
Throwable cause = ite.getCause();
|
||||
if (cause instanceof IOException) {
|
||||
throw (IOException) cause;
|
||||
} else if (cause instanceof RuntimeException) {
|
||||
throw (RuntimeException) cause;
|
||||
} else if (cause instanceof Error) {
|
||||
throw (Error) cause;
|
||||
} else {
|
||||
/* unexpected checked exception; wrap and re-throw */
|
||||
throw new RuntimeException(ite);
|
||||
}
|
||||
} catch (IllegalAccessException ie) {
|
||||
System.err.println("unexpected " + ie);
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkCompatibility() {
|
||||
try {
|
||||
mWebSettings_setDatabaseEnabled = WebSettings.class.getMethod(
|
||||
"setDatabaseEnabled", new Class[] { boolean.class } );
|
||||
/* success, this is a newer device */
|
||||
} catch (NoSuchMethodException nsme) {
|
||||
/* failure, must be older device */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void setStorage(WebSettings setting, boolean enable, String path) {
|
||||
if (mWebSettings_setDatabaseEnabled != null) {
|
||||
/* feature is supported */
|
||||
setting.setDatabaseEnabled(enable);
|
||||
setting.setDatabasePath(path);
|
||||
} else {
|
||||
/* feature not supported, do something else */
|
||||
System.out.println("dump not supported");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user