package com.wangdaye.mysplash.common.utils.helper; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.util.Pair; import android.text.TextUtils; import android.view.View; import com.wangdaye.mysplash.Mysplash; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common.data.entity.unsplash.Collection; import com.wangdaye.mysplash.common.data.entity.unsplash.Photo; import com.wangdaye.mysplash.common.data.entity.unsplash.User; import com.wangdaye.mysplash.common._basic.MysplashActivity; import com.wangdaye.mysplash.common.ui.activity.CustomApiActivity; import com.wangdaye.mysplash.common.utils.FileUtils; import com.wangdaye.mysplash.main.view.activity.NotificationActivity; import com.wangdaye.mysplash.tag.view.activity.TagActivity; import com.wangdaye.mysplash.common.ui.activity.DownloadManageActivity; import com.wangdaye.mysplash.common.ui.activity.IntroduceActivity; import com.wangdaye.mysplash.common.ui.activity.LoginActivity; import com.wangdaye.mysplash.common.ui.activity.PreviewActivity; import com.wangdaye.mysplash.common.ui.activity.SettingsActivity; import com.wangdaye.mysplash.common.ui.activity.UpdateMeActivity; import com.wangdaye.mysplash.common.utils.manager.AuthManager; import com.wangdaye.mysplash.about.view.activity.AboutActivity; import com.wangdaye.mysplash.collection.view.activity.CollectionActivity; import com.wangdaye.mysplash.main.view.activity.MainActivity; import com.wangdaye.mysplash.me.view.activity.MeActivity; import com.wangdaye.mysplash.me.view.activity.MyFollowActivity; import com.wangdaye.mysplash.photo.view.activity.PhotoActivity; import com.wangdaye.mysplash.user.view.activity.UserActivity; import java.util.List; /** * Intent helper. * * This helper that can build {@link Intent} and make start {@link MysplashActivity} easier. * * */ public class IntentHelper { public static void startMainActivity(Activity a) { Intent intent = new Intent(a, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); a.startActivity(intent); } public static void startNotificationActivity(MysplashActivity a) { Intent intent = new Intent(a, NotificationActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startPhotoActivity(MysplashActivity a, View image, View background, Photo p) { Mysplash.getInstance().setPhoto(p); Intent intent = new Intent(a, PhotoActivity.class); intent.putExtra(PhotoActivity.KEY_PHOTO_ACTIVITY_PHOTO, p); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { ActivityOptionsCompat options = ActivityOptionsCompat .makeScaleUpAnimation( background, (int) background.getX(), (int) background.getY(), background.getMeasuredWidth(), background.getMeasuredHeight()); ActivityCompat.startActivityForResult( a, intent, Mysplash.PHOTO_ACTIVITY, options.toBundle()); } else { ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation( a, Pair.create(image, a.getString(R.string.transition_photo_image)), Pair.create(background, a.getString(R.string.transition_photo_background))); ActivityCompat.startActivityForResult( a, intent, Mysplash.PHOTO_ACTIVITY, options.toBundle()); } } public static void startPhotoActivity(MysplashActivity a, String photoId) { Intent intent = new Intent(a, PhotoActivity.class); intent.putExtra(PhotoActivity.KEY_PHOTO_ACTIVITY_ID, photoId); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startPreviewActivity(MysplashActivity a, Photo photo, boolean showIcon) { Intent intent = new Intent(a, PreviewActivity.class); intent.putExtra(PreviewActivity.KEY_PREVIEW_ACTIVITY_PREVIEW, photo); intent.putExtra(PreviewActivity.KEY_PREVIEW_ACTIVITY_SHOW_ICON, showIcon); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startPreviewActivity(MysplashActivity a, User user, boolean showIcon) { Intent intent = new Intent(a, PreviewActivity.class); intent.putExtra(PreviewActivity.KEY_PREVIEW_ACTIVITY_PREVIEW, user); intent.putExtra(PreviewActivity.KEY_PREVIEW_ACTIVITY_SHOW_ICON, showIcon); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startCollectionActivity(MysplashActivity a, View avatar, View background, Collection c) { Intent intent = new Intent(a, CollectionActivity.class); intent.putExtra(CollectionActivity.KEY_COLLECTION_ACTIVITY_COLLECTION, c); ActivityOptionsCompat options; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { options = ActivityOptionsCompat .makeScaleUpAnimation( background, (int) background.getX(), (int) background.getY(), background.getMeasuredWidth(), background.getMeasuredHeight()); } else { options = ActivityOptionsCompat .makeSceneTransitionAnimation( a, Pair.create(avatar, a.getString(R.string.transition_collection_avatar)), Pair.create(background, a.getString(R.string.transition_collection_background))); } ActivityCompat.startActivityForResult( a, intent, Mysplash.COLLECTION_ACTIVITY, options.toBundle()); } public static void startCollectionActivity(MysplashActivity a, Collection c) { Intent intent = new Intent(a, CollectionActivity.class); intent.putExtra(CollectionActivity.KEY_COLLECTION_ACTIVITY_COLLECTION, c); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startCollectionActivity(MysplashActivity a, String collectionId) { Intent intent = new Intent(a, CollectionActivity.class); intent.putExtra(CollectionActivity.KEY_COLLECTION_ACTIVITY_ID, collectionId); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startUserActivity(MysplashActivity a, View avatar, User u, @UserActivity.UserPageRule int page) { if (AuthManager.getInstance().isAuthorized() && !TextUtils.isEmpty(AuthManager.getInstance().getUsername()) && u.username.equals(AuthManager.getInstance().getUsername())) { startMeActivity(a, avatar, page); } else { Intent intent = new Intent(a, UserActivity.class); intent.putExtra(UserActivity.KEY_USER_ACTIVITY_USER, u); intent.putExtra(UserActivity.KEY_USER_ACTIVITY_PAGE_POSITION, page); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } else { ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation( a, Pair.create(avatar, a.getString(R.string.transition_user_avatar))); ActivityCompat.startActivityForResult( a, intent, Mysplash.USER_ACTIVITY, options.toBundle()); } } } public static void startLoginActivity(MysplashActivity a) { Intent intent = new Intent(a, LoginActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startMeActivity(MysplashActivity a, View avatar, @UserActivity.UserPageRule int page) { if (!AuthManager.getInstance().isAuthorized()) { startLoginActivity(a); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Intent intent = new Intent(a, MeActivity.class); intent.putExtra(MeActivity.KEY_ME_ACTIVITY_PAGE_POSITION, page); ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation( a, Pair.create(avatar, a.getString(R.string.transition_me_avatar))); ActivityCompat.startActivityForResult( a, intent, Mysplash.ME_ACTIVITY, options.toBundle()); } else { Intent intent = new Intent(a, MeActivity.class); intent.putExtra(MeActivity.KEY_ME_ACTIVITY_PAGE_POSITION, page); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } } public static void startMyFollowActivity(MysplashActivity a) { if (!AuthManager.getInstance().isAuthorized()) { startLoginActivity(a); } else { Intent intent = new Intent(a, MyFollowActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } } public static void startUpdateMeActivity(MysplashActivity a) { Intent intent = new Intent(a, UpdateMeActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startDownloadManageActivity(MysplashActivity a) { Intent intent = new Intent(a, DownloadManageActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startDownloadManageActivityFromNotification(Context context) { Intent intent = new Intent(context, DownloadManageActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(DownloadManageActivity.EXTRA_NOTIFICATION, true); context.startActivity(intent); } public static void startSettingsActivity(MysplashActivity a) { Intent intent = new Intent(a, SettingsActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startAboutActivity(MysplashActivity a) { Intent intent = new Intent(a, AboutActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startIntroduceActivity(MysplashActivity a) { Intent intent = new Intent(a, IntroduceActivity.class); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startCheckPhotoActivity(Context c, String title) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); /* Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + Mysplash.DOWNLOAD_PATH + title + Mysplash.DOWNLOAD_PHOTO_FORMAT);*/ Uri uri = FileUtils.filePathToUri( c, Environment.getExternalStorageDirectory() + Mysplash.DOWNLOAD_PATH + title + Mysplash.DOWNLOAD_PHOTO_FORMAT); intent.setDataAndType(uri, "image/jpg"); c.startActivity( Intent.createChooser( intent, c.getString(R.string.check))); } public static void startCheckCollectionActivity(Context c, String title) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + Mysplash.DOWNLOAD_PATH + title + ".zip"); intent.setDataAndType(uri, "application/x-zip-compressed"); c.startActivity( Intent.createChooser( intent, c.getString(R.string.check))); } public static void startWebActivity(Context c, String url) { String packageName = "com.android.chrome"; Intent browserIntent = new Intent(); browserIntent.setPackage(packageName); List<ResolveInfo> activitiesList = c.getPackageManager().queryIntentActivities( browserIntent, -1); if (activitiesList.size() > 0) { CustomTabHelper.startCustomTabActivity(c, url); } else { c.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } } public static void startTagActivity(MysplashActivity a, String tag) { Intent intent = new Intent(a, TagActivity.class); intent.putExtra(TagActivity.KEY_TAG_ACTIVITY_TAG, tag); a.startActivity(intent); a.overridePendingTransition(R.anim.activity_in, 0); } public static void startCustomApiActivity(SettingsActivity a) { Intent intent = new Intent(a, CustomApiActivity.class); a.startActivityForResult(intent, Mysplash.CUSTOM_API_ACTIVITY); a.overridePendingTransition(R.anim.activity_in, 0); } public static void backToHome(MysplashActivity a) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); a.startActivity(intent); } }