summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2013-08-22 22:13:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-22 22:13:43 +0000
commitfe14e04987a8baf77f0ffbd6d66839f33a4f0474 (patch)
tree4d2bc727dd78cebe071d846fc5c416ff5ac7a9f1 /src
parent0cffae54f9b501144735cfc046c90da824840c08 (diff)
parenta805e1a297c0d1fa84d9fed51e0167aa32bd42bb (diff)
downloadandroid_packages_apps_Trebuchet-fe14e04987a8baf77f0ffbd6d66839f33a4f0474.tar.gz
android_packages_apps_Trebuchet-fe14e04987a8baf77f0ffbd6d66839f33a4f0474.tar.bz2
android_packages_apps_Trebuchet-fe14e04987a8baf77f0ffbd6d66839f33a4f0474.zip
Merge "Finish support for third-party wallpaper pickers" into jb-ub-gel-agar
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java24
-rw-r--r--src/com/android/launcher3/Utilities.java25
-rw-r--r--src/com/android/launcher3/WallpaperPickerActivity.java30
3 files changed, 47 insertions, 32 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index d91fee868..d5fafac56 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -50,7 +50,6 @@ import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.graphics.Canvas;
-import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.Rect;
@@ -107,12 +106,8 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
/**
* Default launcher application.
@@ -1896,7 +1891,7 @@ public class Launcher extends Activity
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
intent.setComponent(appWidgetInfo.configure);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
- startActivityForResultSafely(intent, REQUEST_CREATE_APPWIDGET);
+ Utilities.startActivityForResultSafely(this, intent, REQUEST_CREATE_APPWIDGET);
} else {
// Otherwise just add it
completeAddAppWidget(appWidgetId, info.container, info.screenId, boundWidget,
@@ -2002,9 +1997,9 @@ public class Launcher extends Activity
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
pickIntent.putExtra(Intent.EXTRA_TITLE, getText(R.string.title_select_application));
- startActivityForResultSafely(pickIntent, REQUEST_PICK_APPLICATION);
+ Utilities.startActivityForResultSafely(this, pickIntent, REQUEST_PICK_APPLICATION);
} else {
- startActivityForResultSafely(intent, REQUEST_CREATE_SHORTCUT);
+ Utilities.startActivityForResultSafely(this, intent, REQUEST_CREATE_SHORTCUT);
}
}
@@ -2320,19 +2315,6 @@ public class Launcher extends Activity
return success;
}
- void startActivityForResultSafely(Intent intent, int requestCode) {
- try {
- startActivityForResult(intent, requestCode);
- } catch (ActivityNotFoundException e) {
- Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
- } catch (SecurityException e) {
- Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
- Log.e(TAG, "Launcher does not have the permission to launch " + intent +
- ". Make sure to create a MAIN intent-filter for the corresponding activity " +
- "or use the exported attribute for this activity.", e);
- }
- }
-
private void handleFolderClick(FolderIcon folderIcon) {
final FolderInfo info = folderIcon.getFolderInfo();
Folder openFolder = mWorkspace.getFolderForTag(info);
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 0529cfb74..90db5ab85 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -16,9 +16,10 @@
package com.android.launcher3;
-import java.util.Random;
-
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BlurMaskFilter;
@@ -28,19 +29,17 @@ import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
-import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.PaintDrawable;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.View;
-import android.view.ViewGroup;
+import android.widget.Toast;
import java.util.ArrayList;
-import com.android.launcher3.R;
-
/**
* Various utilities shared amongst the Launcher's classes.
*/
@@ -298,4 +297,18 @@ final class Utilities {
sIconWidth = sIconHeight = widthPx;
sIconTextureWidth = sIconTextureHeight = widthPx;
}
+
+ public static void startActivityForResultSafely(
+ Activity activity, Intent intent, int requestCode) {
+ try {
+ activity.startActivityForResult(intent, requestCode);
+ } catch (ActivityNotFoundException e) {
+ Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+ } catch (SecurityException e) {
+ Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+ Log.e(TAG, "Launcher does not have the permission to launch " + intent +
+ ". Make sure to create a MAIN intent-filter for the corresponding activity " +
+ "or use the exported attribute for this activity.", e);
+ }
+ }
}
diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java
index 7c84c7fa6..bad84603e 100644
--- a/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -61,6 +61,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
private static final String TAG = "Launcher.WallpaperPickerActivity";
private static final int IMAGE_PICK = 5;
+ private static final int PICK_WALLPAPER_THIRD_PARTY_ACTIVITY = 6;
private static final float WALLPAPER_SCREENS_SPAN = 2f;
private ArrayList<Integer> mThumbs;
@@ -91,7 +92,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
if (meta.mLaunchesGallery) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
- startActivityForResult(intent, IMAGE_PICK);
+ Utilities.startActivityForResultSafely(
+ WallpaperPickerActivity.this, intent, IMAGE_PICK);
} else if (meta.mGalleryImageUri != null) {
mCropView.setTileSource(new BitmapRegionTileSource(WallpaperPickerActivity.this,
meta.mGalleryImageUri, 1024, 0), null);
@@ -153,6 +155,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
meta.mGalleryImageUri = uri;
pickedImageThumbnail.setTag(meta);
mThumbnailOnClickListener.onClick(pickedImageThumbnail);
+ } else if (requestCode == PICK_WALLPAPER_THIRD_PARTY_ACTIVITY) {
+ // No result code is returned; just return
+ setResult(RESULT_OK);
+ finish();
}
}
@@ -245,6 +251,16 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
frameLayout.setForeground(new ZeroPaddingDrawable(frameLayout.getForeground()));
}
+ public boolean onMenuItemSelected(int featureId, MenuItem item) {
+ if (item.getIntent() == null) {
+ return super.onMenuItemSelected(featureId, item);
+ } else {
+ Utilities.startActivityForResultSafely(
+ this, item.getIntent(), PICK_WALLPAPER_THIRD_PARTY_ACTIVITY);
+ return true;
+ }
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final Intent pickWallpaperIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
@@ -269,21 +285,25 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
outerLoop:
for (ResolveInfo info : apps) {
- final ComponentName componentName =
+ final ComponentName itemComponentName =
new ComponentName(info.activityInfo.packageName, info.activityInfo.name);
+ final String itemPackageName = itemComponentName.getPackageName();
// Exclude anything from our own package, and the old Launcher
- if (componentName.getPackageName().equals(getPackageName()) ||
- componentName.getPackageName().equals("com.android.launcher")) {
+ if (itemPackageName.equals(getPackageName()) ||
+ itemPackageName.equals("com.android.launcher")) {
continue;
}
// Exclude any package that already responds to the image picker intent
for (ResolveInfo imagePickerActivityInfo : imagePickerActivities) {
- if (componentName.getPackageName().equals(
+ if (itemPackageName.equals(
imagePickerActivityInfo.activityInfo.packageName)) {
continue outerLoop;
}
}
MenuItem mi = sub.add(info.loadLabel(pm));
+ Intent launchIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
+ launchIntent.setComponent(itemComponentName);
+ mi.setIntent(launchIntent);
Drawable icon = info.loadIcon(pm);
if (icon != null) {
mi.setIcon(icon);