Java Code Examples for android.content.Intent#setSourceBounds()

The following examples show how to use android.content.Intent#setSourceBounds() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CoverActivity.java    From GyroscopeImageDemo with Apache License 2.0 5 votes vote down vote up
/**
 * @param cover_url Loading 图 url
 * @param gyroscopeImageView 想要做动画的 GyroscopeImageView
 */
public static void startActivityWithAnimation(final Activity activity, String cover_url,
    GyroscopeImageView gyroscopeImageView) {
  final Intent intent = new Intent(activity, CoverActivity.class);
  intent.putExtra(COVER_URL, cover_url);
  // 获取控件位置信息
  final Rect rect = new Rect();
  gyroscopeImageView.getGlobalVisibleRect(rect);
  intent.setSourceBounds(rect);
  intent.putExtra(OFFSET_X, gyroscopeImageView.getOffsetX());
  intent.putExtra(OFFSET_Y, gyroscopeImageView.getOffsetY());
  activity.startActivity(intent);
  activity.overridePendingTransition(0, 0);
}
 
Example 2
Source File: Launcher.java    From LaunchEnr with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Event handler for the wallpaper picker button that appears after a long press
 * on the home screen.
 */
public void onClickWallpaperPicker(View v) {
    if (!Utilities.isWallpaperAllowed(this)) {
        Toast.makeText(this, R.string.msg_disabled_by_admin, Toast.LENGTH_SHORT).show();
        return;
    }

    int pageScroll = mWorkspace.getScrollForPage(mWorkspace.getPageNearestToCenterOfScreen());
    float offset = mWorkspace.mWallpaperOffset.wallpaperOffsetForScroll(pageScroll);
    setWaitingForResult(new PendingRequestArgs(new ItemInfo()));
    Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER)
            .putExtra(Utilities.EXTRA_WALLPAPER_OFFSET, offset);

    String pickerPackage = getString(R.string.wallpaper_picker_package);
    boolean hasTargetPackage = TextUtils.isEmpty(pickerPackage);
    if (!hasTargetPackage) {
        intent.setPackage(pickerPackage);
    }

    intent.setSourceBounds(getViewBounds(v));
    try {
        startActivityForResult(intent, REQUEST_PICK_WALLPAPER,
                // If there is no target package, use the default intent chooser animation
                hasTargetPackage ? getActivityLaunchOptions(v) : null);
    } catch (ActivityNotFoundException e) {
        setWaitingForResult(null);
        Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
    }
}
 
Example 3
Source File: Launcher.java    From LaunchEnr with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Event handler for a click on the settings button that appears after a long press
 * on the home screen.
 */
public void onClickSettingsButton(View v) {
    Intent intent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES)
            .setPackage(getPackageName());
    intent.setSourceBounds(getViewBounds(v));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent, getActivityLaunchOptions(v));
}
 
Example 4
Source File: Launcher.java    From LaunchEnr with GNU General Public License v3.0 5 votes vote down vote up
public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
    if (mIsSafeModeEnabled && !Utilities.isSystemApp(this, intent)) {
        Toast.makeText(this, R.string.safemode_shortcut_error, Toast.LENGTH_SHORT).show();
        return false;
    }
    // Only launch using the new animation if the shortcut has not opted out (this is a
    // private contract between launcher and may be ignored in the future).
    boolean useLaunchAnimation = (v != null) &&
            !intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION);
    Bundle optsBundle = useLaunchAnimation ? getActivityLaunchOptions(v) : null;

    UserHandle user = item == null ? null : item.user;

    // Prepare intent
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (v != null) {
        intent.setSourceBounds(getViewBounds(v));
    }
    try {
        if (AndroidVersion.isAtLeastMarshmallow
                && (item instanceof ShortcutInfo)
                && (item.itemType == Favorites.ITEM_TYPE_SHORTCUT
                 || item.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT)
                && !((ShortcutInfo) item).isPromise()) {
            // Shortcuts need some special checks due to legacy reasons.
            startShortcutIntentSafely(intent, optsBundle, item);
        } else if (user == null || user.equals(Process.myUserHandle())) {
            // Could be launching some bookkeeping activity
            startActivity(intent, optsBundle);
        } else {
            LauncherAppsCompat.getInstance(this).startActivityForProfile(
                    intent.getComponent(), user, intent.getSourceBounds(), optsBundle);
        }
        return true;
    } catch (ActivityNotFoundException|SecurityException e) {
        Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
    return false;
}
 
Example 5
Source File: AddWorkspaceItemsTask.java    From LaunchEnr with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Returns true if the shortcuts already exists on the workspace. This must be called after
 * the workspace has been loaded. We identify a shortcut by its intent.
 */
private boolean shortcutExists(BgDataModel dataModel, Intent intent, UserHandle user) {
    final String intentWithPkg, intentWithoutPkg;
    if (intent == null) {
        // Skip items with null intents
        return true;
    }
    if (intent.getComponent() != null) {
        // If component is not null, an intent with null package will produce
        // the same result and should also be a match.
        String packageName = intent.getComponent().getPackageName();
        if (intent.getPackage() != null) {
            intentWithPkg = intent.toUri(0);
            intentWithoutPkg = new Intent(intent).setPackage(null).toUri(0);
        } else {
            intentWithPkg = new Intent(intent).setPackage(packageName).toUri(0);
            intentWithoutPkg = intent.toUri(0);
        }
    } else {
        intentWithPkg = intent.toUri(0);
        intentWithoutPkg = intent.toUri(0);
    }

    synchronized (dataModel) {
        for (ItemInfo item : dataModel.itemsIdMap) {
            if (item instanceof ShortcutInfo) {
                ShortcutInfo info = (ShortcutInfo) item;
                if (item.getIntent() != null && info.user.equals(user)) {
                    Intent copyIntent = new Intent(item.getIntent());
                    copyIntent.setSourceBounds(intent.getSourceBounds());
                    String s = copyIntent.toUri(0);
                    if (intentWithPkg.equals(s) || intentWithoutPkg.equals(s)) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
 
Example 6
Source File: IntentUtil.java    From paper-launcher with MIT License 5 votes vote down vote up
public static void launchApp(View view, Intent intent) {
    if (intent == null) {
        return;
    }

    intent.setSourceBounds(IntentUtil.getViewBounds(view));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    view.getContext().startActivity(intent, IntentUtil.getActivityLaunchOptions(view));
}
 
Example 7
Source File: IntentUtil.java    From paper-launcher with MIT License 5 votes vote down vote up
public static void startGoogleSearchActivity(View view) {
    final Context context = view.getContext();

    final SearchManager searchManager =
            (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
    if (searchManager == null) {
        return;
    }

    ComponentName globalSearchActivity = searchManager.getGlobalSearchActivity();
    if (globalSearchActivity == null) {
        return;
    }

    Intent intent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setComponent(globalSearchActivity);

    Bundle appSearchData = new Bundle();
    appSearchData.putString("source", context.getPackageName());

    intent.putExtra(SearchManager.APP_DATA, appSearchData);
    intent.setSourceBounds(getViewBounds(view));
    try {
        context.startActivity(intent);
    } catch (ActivityNotFoundException ex) {
        ex.printStackTrace();
    }
}
 
Example 8
Source File: LauncherAppsCompatV16.java    From Trebuchet with GNU General Public License v3.0 5 votes vote down vote up
public void startActivityForProfile(ComponentName component, UserHandleCompat user,
        Rect sourceBounds, Bundle opts) {
    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setComponent(component);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(launchIntent, opts);
}
 
Example 9
Source File: LauncherAppsCompatV16.java    From LB-Launcher with Apache License 2.0 5 votes vote down vote up
public void startActivityForProfile(ComponentName component, UserHandleCompat user,
        Rect sourceBounds, Bundle opts) {
    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setComponent(component);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(launchIntent, opts);
}
 
Example 10
Source File: LauncherAppsService.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
@Override
public void startActivityAsUser(IApplicationThread caller, String callingPackage,
        ComponentName component, Rect sourceBounds,
        Bundle opts, UserHandle user) throws RemoteException {
    if (!canAccessProfile(user.getIdentifier(), "Cannot start activity")) {
        return;
    }

    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    launchIntent.setPackage(component.getPackageName());

    boolean canLaunch = false;

    final int callingUid = injectBinderCallingUid();
    long ident = Binder.clearCallingIdentity();
    try {
        final PackageManagerInternal pmInt =
                LocalServices.getService(PackageManagerInternal.class);
        ActivityInfo info = pmInt.getActivityInfo(component,
                PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
                callingUid, user.getIdentifier());
        if (!info.exported) {
            throw new SecurityException("Cannot launch non-exported components "
                    + component);
        }

        // Check that the component actually has Intent.CATEGORY_LAUCNCHER
        // as calling startActivityAsUser ignores the category and just
        // resolves based on the component if present.
        List<ResolveInfo> apps = pmInt.queryIntentActivities(launchIntent,
                PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
                callingUid, user.getIdentifier());
        final int size = apps.size();
        for (int i = 0; i < size; ++i) {
            ActivityInfo activityInfo = apps.get(i).activityInfo;
            if (activityInfo.packageName.equals(component.getPackageName()) &&
                    activityInfo.name.equals(component.getClassName())) {
                // Found an activity with category launcher that matches
                // this component so ok to launch.
                launchIntent.setPackage(null);
                launchIntent.setComponent(component);
                canLaunch = true;
                break;
            }
        }
        if (!canLaunch) {
            throw new SecurityException("Attempt to launch activity without "
                    + " category Intent.CATEGORY_LAUNCHER " + component);
        }
    } finally {
        Binder.restoreCallingIdentity(ident);
    }
    mActivityManagerInternal.startActivityAsUser(caller, callingPackage,
            launchIntent, opts, user.getIdentifier());
}
 
Example 11
Source File: IntentUtil.java    From paper-launcher with MIT License 4 votes vote down vote up
public static void startGoogleVoiceRecognitionActivity(View view) {
    Intent intent = new Intent("android.speech.action.VOICE_SEARCH_HANDS_FREE");
    intent.setSourceBounds(getViewBounds(view));
    view.getContext().startActivity(intent);
}
 
Example 12
Source File: Launcher.java    From TurboLauncher with Apache License 2.0 4 votes vote down vote up
/**
 * Launches the intent referred by the clicked shortcut.
 * 
 * @param v
 *            The view representing the clicked shortcut.
 */
public void onClick(View v) {
	// Make sure that rogue clicks don't get through while allapps is
	// launching, or after the
	// view has detached (it's possible for this to happen if the view is
	// removed mid touch).
	if (v.getWindowToken() == null) {
		return;
	}

	if (!mWorkspace.isFinishedSwitchingState()) {
		return;
	}

	if (v instanceof Workspace) {
		if (mWorkspace.isInOverviewMode()) {
			mWorkspace.exitOverviewMode(true);
		}
		return;
	}

	if (v instanceof CellLayout) {
		if (isAllAppsVisible()) {
			if (mAppsCustomizeContent.isInOverviewMode()) {
				mAppsCustomizeContent.exitOverviewMode(
						mAppsCustomizeContent.indexOfChild(v), true);
			}
		} else {
			if (mWorkspace.isInOverviewMode()) {
				mWorkspace.exitOverviewMode(mWorkspace.indexOfChild(v),
						true);
			}
		}
	}

	Object tag = v.getTag();
	if (tag instanceof ShortcutInfo) {
		// Open shortcut
		final ShortcutInfo shortcut = (ShortcutInfo) tag;
		if (shortcut.itemType == LauncherSettings.Favorites.ITEM_TYPE_ALLAPPS) {
			showAllApps(true,
					AppsCustomizePagedView.ContentType.Applications, true);
		} else {
			final Intent intent = shortcut.intent;

			// Check for special shortcuts
			if (intent.getComponent() != null) {
				final String shortcutClass = intent.getComponent()
						.getClassName();

				if (shortcutClass.equals(WidgetAdder.class.getName())) {
					onClickAddWidgetButton();
					return;
				}
			}

			// Start activities
			int[] pos = new int[2];
			v.getLocationOnScreen(pos);
			intent.setSourceBounds(new Rect(pos[0], pos[1], pos[0]
					+ v.getWidth(), pos[1] + v.getHeight()));

			boolean success = startActivitySafely(v, intent, tag);

			mStats.recordLaunch(intent, shortcut);

			if (success && v instanceof BubbleTextView) {
				mWaitingForResume = (BubbleTextView) v;
				mWaitingForResume.setStayPressed(true);
			}
		}
	} else if (tag instanceof FolderInfo) {
		if (v instanceof FolderIcon) {
			FolderIcon fi = (FolderIcon) v;
			handleFolderClick(fi);
		}
	} else if (v == mAllAppsButton) {
		if (isAllAppsVisible()) {
			showWorkspace(true);
		} else {
			onClickAllAppsButton(v);
		}
	}
}