package com.stardust.scriptdroid.external.shortcut; import android.content.Context; import android.content.Intent; import android.os.Bundle; /** * Created by Stardust on 2017/1/20. */ public class Shortcut { private Context mContext; private String mName; private String mTargetClass; private String mTargetPackage; private Intent.ShortcutIconResource mIcon; private boolean mDuplicate = false; private Intent mLaunchIntent = new Intent(); public Shortcut(Context context) { mContext = context; mTargetPackage = mContext.getPackageName(); } public Shortcut(String name, Context context) { this(context); mName = name; } public Shortcut name(String name) { mName = name; return this; } public Shortcut targetPackage(String targetPackage) { mTargetPackage = targetPackage; return this; } public Shortcut targetClass(String targetClass) { mTargetClass = targetClass; return this; } public Shortcut targetClass(Class<?> targetClass) { mTargetClass = targetClass.getName(); return this; } public Shortcut icon(Intent.ShortcutIconResource icon) { mIcon = icon; return this; } public Shortcut icon(int resId) { mIcon = Intent.ShortcutIconResource.fromContext(mContext, resId); return this; } public Shortcut duplicate(boolean duplicate) { mDuplicate = duplicate; return this; } public String getName() { return mName; } public Intent.ShortcutIconResource getIcon() { return mIcon; } public boolean isDuplicate() { return mDuplicate; } private String getClassName() { return mTargetClass; } private String getPackageName() { return mTargetPackage; } public Intent getCreateIntent() { return new Intent(Intent.ACTION_CREATE_SHORTCUT) .putExtra(Intent.EXTRA_SHORTCUT_NAME, getName()) .putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, getIcon()) .putExtra(Intent.EXTRA_SHORTCUT_INTENT, getLaunchIntent()) .putExtra("duplicate", isDuplicate()) .setAction("com.android.launcher.action.INSTALL_SHORTCUT"); } public Intent getLaunchIntent() { mLaunchIntent.setClassName(getPackageName(), getClassName()); return mLaunchIntent; } public void send() { mContext.sendBroadcast(getCreateIntent()); } public Shortcut extras(Bundle bundle) { mLaunchIntent.putExtras(bundle); return this; } public Shortcut extras(Intent intent) { mLaunchIntent.putExtras(intent); return this; } }