From 3061a801468cf77af12fd550d0883b24901d980a Mon Sep 17 00:00:00 2001 From: toby Date: Tue, 29 May 2012 17:47:27 +0200 Subject: [PATCH] updated to work with Google+ and other apps. Bugs fixed, back-button handling fixed. --- .classpath | 2 + .gitignore | 0 .project | 12 +++++ AndroidManifest.xml | 0 META-INF/MANIFEST.MF | 10 ++++ README | 0 proguard.cfg | 0 project.properties | 2 +- res/drawable-hdpi/ic_launcher.png | Bin res/drawable-ldpi/ic_launcher.png | Bin res/drawable-mdpi/ic_launcher.png | Bin res/drawable/loader_bg.xml | 5 ++ res/layout/main.xml | 23 +++++---- res/values/strings.xml | 3 +- .../google_news/GoogleNewsActivity.java | 48 +++++++++++++++--- 15 files changed, 85 insertions(+), 20 deletions(-) mode change 100644 => 100755 .classpath mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .project mode change 100644 => 100755 AndroidManifest.xml create mode 100755 META-INF/MANIFEST.MF mode change 100644 => 100755 README mode change 100644 => 100755 proguard.cfg mode change 100644 => 100755 project.properties mode change 100644 => 100755 res/drawable-hdpi/ic_launcher.png mode change 100644 => 100755 res/drawable-ldpi/ic_launcher.png mode change 100644 => 100755 res/drawable-mdpi/ic_launcher.png create mode 100755 res/drawable/loader_bg.xml mode change 100644 => 100755 res/layout/main.xml mode change 100644 => 100755 res/values/strings.xml mode change 100644 => 100755 src/com/tobykurien/google_news/GoogleNewsActivity.java diff --git a/.classpath b/.classpath old mode 100644 new mode 100755 index a4763d1..929adfa --- a/.classpath +++ b/.classpath @@ -1,7 +1,9 @@ + + diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.project b/.project old mode 100644 new mode 100755 index 98c0e70..eb967ab --- a/.project +++ b/.project @@ -20,14 +20,26 @@ + + org.eclipse.xtend.shared.ui.xtendBuilder + + + com.android.ide.eclipse.adt.ApkBuilder + + org.eclipse.xtext.ui.shared.xtextBuilder + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.xtend.shared.ui.xtendXPandNature org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature diff --git a/AndroidManifest.xml b/AndroidManifest.xml old mode 100644 new mode 100755 diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100755 index 0000000..fa87b32 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Xtend Tutorial +Bundle-SymbolicName: xtend.tutorial +Bundle-Version: 2.1.0.qualifier +Bundle-Vendor: Eclipse Modeling +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Require-Bundle: org.eclipse.xtext.xtend2.lib;bundle-version="2.0.0", + org.junit4, + org.aopalliance;bundle-version="1.0.0" \ No newline at end of file diff --git a/README b/README old mode 100644 new mode 100755 diff --git a/proguard.cfg b/proguard.cfg old mode 100644 new mode 100755 diff --git a/project.properties b/project.properties old mode 100644 new mode 100755 index 5a70945..f049142 --- a/project.properties +++ b/project.properties @@ -8,4 +8,4 @@ # project structure. # Project target. -target=android-7 +target=android-10 diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/res/drawable-ldpi/ic_launcher.png b/res/drawable-ldpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png old mode 100644 new mode 100755 diff --git a/res/drawable/loader_bg.xml b/res/drawable/loader_bg.xml new file mode 100755 index 0000000..8726d20 --- /dev/null +++ b/res/drawable/loader_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/res/layout/main.xml b/res/layout/main.xml old mode 100644 new mode 100755 index 87e614f..860e58b --- a/res/layout/main.xml +++ b/res/layout/main.xml @@ -1,21 +1,24 @@ - - - - - + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml old mode 100644 new mode 100755 index 0d5e370..83a1a7a --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,7 +1,6 @@ - Hello World, GoogleNewsActivity! - GoogleNews + Google Apps \ No newline at end of file diff --git a/src/com/tobykurien/google_news/GoogleNewsActivity.java b/src/com/tobykurien/google_news/GoogleNewsActivity.java old mode 100644 new mode 100755 index 4998e38..238982f --- a/src/com/tobykurien/google_news/GoogleNewsActivity.java +++ b/src/com/tobykurien/google_news/GoogleNewsActivity.java @@ -5,13 +5,21 @@ import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; +import android.view.KeyEvent; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; +import android.widget.Toast; public class GoogleNewsActivity extends Activity { boolean siteLoaded = false; + WebView wv; + + String[] googleSites = new String[]{ + "google.com", "youtube.com", + "google.co.za" + }; /** Called when the activity is first created. */ @Override @@ -44,14 +52,14 @@ public WebView getWebView() { * @return */ public String getSiteUrl() { - return "https://news.google.com/"; + return "https://mobile.google.com/"; } @Override protected void onStart() { super.onStart(); - WebView wv = getWebView(); + wv = getWebView(); if (wv == null) { finish(); return; @@ -64,8 +72,8 @@ protected void onStart() { pb.setVisibility(View.VISIBLE); //wv.loadData("Loading Google News...", "text/html", null); - wv.enablePlatformNotifications(); - wv.getSettings().setJavaScriptEnabled(true); + WebView.enablePlatformNotifications(); + wv.getSettings().setJavaScriptEnabled(true); wv.loadUrl(getSiteUrl()); // wv.getSettings().setUserAgentString("android"); @@ -89,21 +97,47 @@ public void onPageStarted(WebView view, String url, Bitmap favicon) { public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri = Uri.parse(url); if ((uri.getScheme().equals("http") || uri.getScheme().equals("https")) - && !uri.getHost().endsWith("google.com")) { + && !isGoogleSite(uri.getHost())) { Intent i = new Intent(android.content.Intent.ACTION_VIEW); i.setData(uri); - startActivity(Intent.createChooser(i, "Open Url")); + i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(i); return true; } else if (uri.getScheme().equals("mailto")) { Intent i = new Intent(android.content.Intent.ACTION_SEND); i.putExtra(android.content.Intent.EXTRA_EMAIL, url); i.setType("text/html"); - startActivity(Intent.createChooser(i, "Send Email")); + startActivity(i); return true; } return super.shouldOverrideUrlLoading(view, url); } + + @Override + public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { + // TODO Auto-generated method stub + super.onReceivedError(view, errorCode, description, failingUrl); + Toast.makeText(GoogleNewsActivity.this, description, Toast.LENGTH_LONG).show(); + } }); } + + private boolean isGoogleSite(String host) { + for (String site : googleSites) { + if (host.toLowerCase().endsWith(site.toLowerCase())) { + return true; + } + } + return false; + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) { + wv.goBack(); + return true; + } + return super.onKeyDown(keyCode, event); + } } \ No newline at end of file