Merge remote-tracking branch 'origin/danielegobbetti-playground'

This commit is contained in:
Andreas Shimokawa 2016-03-16 22:27:13 +01:00
commit 5906c02330
1 changed files with 24 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.NavUtils; import android.support.v4.app.NavUtils;
@ -9,6 +10,7 @@ import android.view.MenuItem;
import android.webkit.JavascriptInterface; import android.webkit.JavascriptInterface;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast; import android.widget.Toast;
import org.json.JSONException; import org.json.JSONException;
@ -61,6 +63,7 @@ public class ExternalPebbleJSActivity extends Activity {
WebView myWebView = (WebView) findViewById(R.id.configureWebview); WebView myWebView = (WebView) findViewById(R.id.configureWebview);
myWebView.clearCache(true); myWebView.clearCache(true);
myWebView.setWebViewClient(new GBWebClient());
WebSettings webSettings = myWebView.getSettings(); WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptEnabled(true);
//needed to access the DOM //needed to access the DOM
@ -87,6 +90,23 @@ public class ExternalPebbleJSActivity extends Activity {
return null; return null;
} }
private class GBWebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http://") || url.startsWith("https://")) {
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
startActivity(i);
} else {
url = url.replaceFirst("^pebblejs://close#", "file:///android_asset/app_config/configure.html?config=true&json=");
view.loadUrl(url);
}
return true;
}
}
private class JSInterface { private class JSInterface {
public JSInterface() { public JSInterface() {
@ -131,11 +151,11 @@ public class ExternalPebbleJSActivity extends Activity {
public String getActiveWatchInfo() { public String getActiveWatchInfo() {
JSONObject wi = new JSONObject(); JSONObject wi = new JSONObject();
try { try {
wi.put("firmware",mGBDevice.getFirmwareVersion()); wi.put("firmware", mGBDevice.getFirmwareVersion());
wi.put("platform", PebbleUtils.getPlatformName(mGBDevice.getHardwareVersion())); wi.put("platform", PebbleUtils.getPlatformName(mGBDevice.getHardwareVersion()));
wi.put("model", PebbleUtils.getModel(mGBDevice.getHardwareVersion())); wi.put("model", PebbleUtils.getModel(mGBDevice.getHardwareVersion()));
//TODO: use real info //TODO: use real info
wi.put("language","en"); wi.put("language", "en");
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -161,11 +181,11 @@ public class ExternalPebbleJSActivity extends Activity {
public String getAppUUID() { public String getAppUUID() {
return appUuid.toString(); return appUuid.toString();
} }
@JavascriptInterface @JavascriptInterface
public String getWatchToken() { public String getWatchToken() {
//specification says: A string that is is guaranteed to be identical for each Pebble device for the same app across different mobile devices. The token is unique to your app and cannot be used to track Pebble devices across applications. see https://developer.pebble.com/docs/js/Pebble/ //specification says: A string that is is guaranteed to be identical for each Pebble device for the same app across different mobile devices. The token is unique to your app and cannot be used to track Pebble devices across applications. see https://developer.pebble.com/docs/js/Pebble/
return "gb"+appUuid.toString(); return "gb" + appUuid.toString();
} }
} }