| Index: remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
|
| diff --git a/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java b/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
|
| index 0404827cb0dc86930b90efd2de0197c3e5a7a2d8..efe1f214c704f9002dc7e14d732afd4dce042bf2 100644
|
| --- a/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
|
| +++ b/remoting/android/java/src/org/chromium/chromoting/HelpActivity.java
|
| @@ -5,23 +5,49 @@
|
| package org.chromium.chromoting;
|
|
|
| import android.app.Activity;
|
| +import android.content.ComponentName;
|
| import android.content.Intent;
|
| +import android.content.ServiceConnection;
|
| import android.content.pm.PackageInfo;
|
| import android.content.pm.PackageManager;
|
| +import android.graphics.Bitmap;
|
| import android.net.Uri;
|
| +import android.os.Binder;
|
| import android.os.Bundle;
|
| +import android.os.IBinder;
|
| +import android.os.Parcel;
|
| +import android.os.RemoteException;
|
| import android.text.TextUtils;
|
| +import android.util.Log;
|
| import android.view.Menu;
|
| import android.view.MenuItem;
|
| +import android.view.View;
|
| import android.webkit.WebView;
|
| import android.webkit.WebViewClient;
|
|
|
| +import org.chromium.ui.UiUtils;
|
| +
|
| /**
|
| * The Activity for showing the Help screen.
|
| */
|
| public class HelpActivity extends Activity {
|
| private static final String PLAY_STORE_URL = "market://details?id=";
|
|
|
| + /**
|
| + * Maximum dimension for the screenshot to be sent to the Send Feedback handler. This size
|
| + * ensures the size of bitmap < 1MB, which is a requirement of the handler.
|
| + */
|
| + private static final int MAX_FEEDBACK_SCREENSHOT_DIMENSION = 600;
|
| +
|
| + /**
|
| + * This global variable is used for passing the screenshot from the originating Activity to the
|
| + * HelpActivity. There seems to be no better way of doing this.
|
| + */
|
| + private static Bitmap mScreenshot;
|
| +
|
| + /** Constant used to send the feedback parcel to the system feedback service. */
|
| + private static final int SEND_FEEDBACK_INFO = Binder.FIRST_CALL_TRANSACTION;
|
| +
|
| /** Launches an external web browser or application. */
|
| private void openUrl(String url) {
|
| Uri uri = Uri.parse(url);
|
| @@ -34,6 +60,41 @@ public class HelpActivity extends Activity {
|
| }
|
| }
|
|
|
| + private void sendFeedback() {
|
| + Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
|
| + ServiceConnection conn = new ServiceConnection() {
|
| + @Override
|
| + public void onServiceConnected(ComponentName name, IBinder service) {
|
| + try {
|
| + Parcel parcel = Parcel.obtain();
|
| + if (mScreenshot != null) {
|
| + mScreenshot.writeToParcel(parcel, 0);
|
| + }
|
| + service.transact(SEND_FEEDBACK_INFO, parcel, null, 0);
|
| + parcel.recycle();
|
| + } catch (RemoteException ex) {
|
| + Log.e("help", "Unexpected error sending feedback: ", ex);
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onServiceDisconnected(ComponentName name) {}
|
| + };
|
| +
|
| + bindService(intent, conn, BIND_AUTO_CREATE);
|
| + }
|
| +
|
| + /** Launches the Help activity. */
|
| + public static void launch(Activity activity, String helpUrl) {
|
| + View rootView = activity.getWindow().getDecorView().getRootView();
|
| + mScreenshot = UiUtils.generateScaledScreenshot(rootView, MAX_FEEDBACK_SCREENSHOT_DIMENSION,
|
| + Bitmap.Config.ARGB_8888);
|
| +
|
| + Intent intent = new Intent(activity, HelpActivity.class);
|
| + intent.setData(Uri.parse(helpUrl));
|
| + activity.startActivity(intent);
|
| + }
|
| +
|
| @Override
|
| public void onCreate(Bundle savedInstanceState) {
|
| super.onCreate(savedInstanceState);
|
| @@ -72,6 +133,10 @@ public class HelpActivity extends Activity {
|
| @Override
|
| public boolean onOptionsItemSelected(MenuItem item) {
|
| switch (item.getItemId()) {
|
| + case R.id.actionbar_feedback:
|
| + sendFeedback();
|
| + return true;
|
| +
|
| case R.id.actionbar_play_store:
|
| openUrl(PLAY_STORE_URL + getPackageName());
|
| return true;
|
|
|