summaryrefslogtreecommitdiffstats
path: root/remoting/android
diff options
context:
space:
mode:
authorlambroslambrou <lambroslambrou@chromium.org>2016-02-18 19:28:46 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-19 03:30:10 +0000
commit6d4979e251516af82a89ab15815fd2adb66b5714 (patch)
treeb5df6f038f99d5d290a61abf6338daa894af7070 /remoting/android
parent16e9a352bd28981ba7d045f71364bc7e5f6f68b4 (diff)
downloadchromium_src-6d4979e251516af82a89ab15815fd2adb66b5714.zip
chromium_src-6d4979e251516af82a89ab15815fd2adb66b5714.tar.gz
chromium_src-6d4979e251516af82a89ab15815fd2adb66b5714.tar.bz2
Android Chromoting: Pull out common code for starting new Activities.
Review URL: https://codereview.chromium.org/1673783005 Cr-Commit-Position: refs/heads/master@{#376360}
Diffstat (limited to 'remoting/android')
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/Chromoting.java4
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java25
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java20
3 files changed, 31 insertions, 18 deletions
diff --git a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
index f53926c..11aa445 100644
--- a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
+++ b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java
@@ -133,9 +133,7 @@ public class Chromoting extends AppCompatActivity implements ConnectionListener,
Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT);
intent.putExtra(Settings.EXTRA_ACCOUNT_TYPES,
new String[] { ACCOUNT_TYPE });
- if (intent.resolveActivity(getPackageManager()) != null) {
- startActivity(intent);
- }
+ ChromotingUtil.startActivitySafely(Chromoting.this, intent);
finish();
}
});
diff --git a/remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java b/remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java
index 0f26ea7..3d2bb49 100644
--- a/remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java
+++ b/remoting/android/java/src/org/chromium/chromoting/ChromotingUtil.java
@@ -4,15 +4,19 @@
package org.chromium.chromoting;
+import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.Log;
/** Utility methods for chromoting code. */
public abstract class ChromotingUtil {
@@ -68,4 +72,25 @@ public abstract class ChromotingUtil {
throw new Resources.NotFoundException("Attribute not a color.");
}
}
+
+ /**
+ * Starts a new Activity only if the system can resolve the given Intent. Useful for implicit
+ * intents where the system might not have an application that can handle it.
+ * @param context The parent context.
+ * @param intent The (implicit) intent to launch.
+ * @return True if the intent was resolved.
+ */
+ public static boolean startActivitySafely(Context context, Intent intent) {
+ if (intent.resolveActivity(context.getPackageManager()) == null) {
+ Log.w(TAG, "Unable to resolve activity for: %s", intent);
+ return false;
+ }
+ context.startActivity(intent);
+ return true;
+ }
+
+ /** Launches an external web browser or application. */
+ public static boolean openUrl(Activity parentActivity, Uri uri) {
+ return startActivitySafely(parentActivity, new Intent(Intent.ACTION_VIEW, uri));
+ }
}
diff --git a/remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java b/remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java
index 7c79f97..73d9875 100644
--- a/remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java
+++ b/remoting/android/java/src/org/chromium/chromoting/help/HelpActivity.java
@@ -27,6 +27,7 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.chromium.base.Log;
+import org.chromium.chromoting.ChromotingUtil;
import org.chromium.chromoting.R;
import org.chromium.ui.UiUtils;
@@ -62,18 +63,6 @@ public class HelpActivity extends AppCompatActivity {
/** 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);
- 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);
- }
- }
-
private void sendFeedback() {
Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
intent.setComponent(new ComponentName(FEEDBACK_PACKAGE, FEEDBACK_CLASS));
@@ -148,13 +137,14 @@ public class HelpActivity extends AppCompatActivity {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Make sure any links to other websites open up in an external browser.
- String host = Uri.parse(url).getHost();
+ Uri uri = Uri.parse(url);
+ String host = uri.getHost();
// Note that |host| might be null, so allow for this in the test for equality.
if (initialHost.equals(host)) {
return false;
}
- openUrl(url);
+ ChromotingUtil.openUrl(HelpActivity.this, uri);
return true;
}
});
@@ -179,7 +169,7 @@ public class HelpActivity extends AppCompatActivity {
return true;
}
if (id == R.id.actionbar_play_store) {
- openUrl(PLAY_STORE_URL + getPackageName());
+ ChromotingUtil.openUrl(this, Uri.parse(PLAY_STORE_URL + getPackageName()));
return true;
}
if (id == R.id.actionbar_credits) {