summaryrefslogtreecommitdiffstats
path: root/remoting/android
diff options
context:
space:
mode:
authorlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-27 00:29:08 +0000
committerlambroslambrou@chromium.org <lambroslambrou@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-27 00:29:08 +0000
commitbdc71c62e71e7d79ec7560c02dd5edbb23be64fd (patch)
tree4919e2867087ab6188c8c6b5518c4b9c449fc56e /remoting/android
parent1215b5c1868f25ea1b69075fdc9f6d7788c82e1f (diff)
downloadchromium_src-bdc71c62e71e7d79ec7560c02dd5edbb23be64fd.zip
chromium_src-bdc71c62e71e7d79ec7560c02dd5edbb23be64fd.tar.gz
chromium_src-bdc71c62e71e7d79ec7560c02dd5edbb23be64fd.tar.bz2
Add Help & feedback screens to Android Chromoting client
This adds a Help & feedback menu-item for each screen of the app. The Help screen embeds a WebView, which shows a URL dependent on which screen the Help was launched from. There is also a Feedback menu-item, which is currently hidden, pending implementation of this feature (only the Official build will have it). A menu-item is provided for showing the Play Store entry for the application. More menu-items can be added (such as Copyright, Privacy policy, Open source licences) if they are required in the app. BUG=333129 NOTRY=true Review URL: https://codereview.chromium.org/179003006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253659 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/android')
-rw-r--r--remoting/android/java/AndroidManifest.xml.jinja23
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/Chromoting.java23
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/Desktop.java14
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/HelpActivity.java83
4 files changed, 121 insertions, 2 deletions
diff --git a/remoting/android/java/AndroidManifest.xml.jinja2 b/remoting/android/java/AndroidManifest.xml.jinja2
index a08b72a..a163721 100644
--- a/remoting/android/java/AndroidManifest.xml.jinja2
+++ b/remoting/android/java/AndroidManifest.xml.jinja2
@@ -21,5 +21,8 @@
<activity android:name="org.chromium.chromoting.Desktop"
android:configChanges="orientation|screenSize"
android:windowSoftInputMode="adjustResize"/>
+ <activity android:name="org.chromium.chromoting.HelpActivity"
+ android:configChanges="orientation|screenSize"
+ android:uiOptions="splitActionBarWhenNarrow"/>
</application>
</manifest>
diff --git a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
index 477976d..15879c8 100644
--- a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
+++ b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
@@ -17,6 +17,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -45,6 +46,10 @@ public class Chromoting extends Activity implements JniInterface.ConnectionListe
private static final String TOKEN_SCOPE = "oauth2:https://www.googleapis.com/auth/chromoting " +
"https://www.googleapis.com/auth/googletalk";
+ /** Web page to be displayed in the Help screen when launched from this activity. */
+ private static final String HELP_URL =
+ "http://support.google.com/chrome/?p=mobile_crd_hostslist";
+
/** User's account details. */
private Account mAccount;
@@ -171,8 +176,22 @@ public class Chromoting extends Activity implements JniInterface.ConnectionListe
/** Called whenever an action bar button is pressed. */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- refreshHostList();
- return true;
+ switch (item.getItemId()) {
+ case R.id.actionbar_directoryrefresh:
+ refreshHostList();
+ return true;
+
+ case R.id.actionbar_help:
+ {
+ Intent intent = new Intent(this, HelpActivity.class);
+ intent.setData(Uri.parse(HELP_URL));
+ startActivity(intent);
+ }
+ return true;
+
+ default:
+ return super.onOptionsItemSelected(item);
+ }
}
/** Called when the user taps on a host entry. */
diff --git a/remoting/android/java/src/org/chromium/chromoting/Desktop.java b/remoting/android/java/src/org/chromium/chromoting/Desktop.java
index dfad7e7..f426ae1 100644
--- a/remoting/android/java/src/org/chromium/chromoting/Desktop.java
+++ b/remoting/android/java/src/org/chromium/chromoting/Desktop.java
@@ -5,7 +5,9 @@
package org.chromium.chromoting;
import android.app.Activity;
+import android.content.Intent;
import android.content.res.Configuration;
+import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
@@ -20,6 +22,10 @@ import org.chromium.chromoting.jni.JniInterface;
* A simple screen that does nothing except display a DesktopView and notify it of rotations.
*/
public class Desktop extends Activity {
+ /** Web page to be displayed in the Help screen when launched from this activity. */
+ private static final String HELP_URL =
+ "http://support.google.com/chrome/?p=mobile_crd_connecthost";
+
/** The surface that displays the remote host's desktop feed. */
private DesktopView mRemoteHostDesktop;
@@ -107,6 +113,14 @@ public class Desktop extends Activity {
}
return true;
+ case R.id.actionbar_help:
+ {
+ Intent intent = new Intent(this, HelpActivity.class);
+ intent.setData(Uri.parse(HELP_URL));
+ startActivity(intent);
+ }
+ return true;
+
default:
return super.onOptionsItemSelected(item);
}
diff --git a/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java b/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
new file mode 100644
index 0000000..0404827
--- /dev/null
+++ b/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
@@ -0,0 +1,83 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chromoting;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+/**
+ * The Activity for showing the Help screen.
+ */
+public class HelpActivity extends Activity {
+ private static final String PLAY_STORE_URL = "market://details?id=";
+
+ /** Launches an external web browser or application. */
+ private void openUrl(String url) {
+ Uri uri = Uri.parse(url);
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+
+ // Verify that the device can launch an application for this intent, otherwise
+ // startActivity() may crash the application.
+ if (intent.resolveActivity(getPackageManager()) != null) {
+ startActivity(intent);
+ }
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ WebView webView = new WebView(this);
+ setContentView(webView);
+
+ getActionBar().setTitle(getString(R.string.actionbar_help_title));
+
+ CharSequence appName = getTitle();
+ CharSequence versionName = null;
+ try {
+ PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
+ versionName = info.versionName;
+ } catch (PackageManager.NameNotFoundException ex) {
+ throw new RuntimeException("Unable to get version: " + ex);
+ }
+
+ CharSequence subtitle = TextUtils.concat(appName, " ", versionName);
+ getActionBar().setSubtitle(subtitle);
+
+ // This line ensures the WebView remains embedded in this activity and doesn't launch an
+ // external Chrome browser.
+ webView.setWebViewClient(new WebViewClient());
+ webView.getSettings().setJavaScriptEnabled(true);
+ String url = getIntent().getDataString();
+ webView.loadUrl(url);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.help_actionbar, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.actionbar_play_store:
+ openUrl(PLAY_STORE_URL + getPackageName());
+ return true;
+
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+}