package com.garlicg.cutinlib; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; /** * カットインマネージャーとの連携関係のUtiltyです。 */ public class CutinManagerUtils { public final static String ACTION_PICK_CUTIN ="com.garlicg.cutin.action.PICK"; public final static String ACTION_SET_CUTIN ="com.garlicg.cutin.action.SET"; public static final String PACKAGE_NAME_CUTIN_MANAGER = "com.garlicg.cutin"; /** * カットインマネージャーからよばれた際のResultとして返却するIntentを構築します。 * */ public static Intent buildResultIntent(CutinItem item){ Intent intent = new Intent(); intent.putExtra(CutinService.EXTRA_CUTIN_ACTION, item.serviceClass.getName()); intent.putExtra(CutinService.EXTRA_CUTIN_TITLE, item.cutinName); intent.putExtra(CutinService.EXTRA_CUTIN_ID, item.cutinId); return intent; } /** * カットイン設定Activityを呼び出すIntentを構築します。 * 呼び出されるActivityはカットインマネージャーのダイアログテーマになっています。 */ public static Intent buildInAppSetIntent(CutinItem item){ Intent intent = new Intent(ACTION_SET_CUTIN); intent.setPackage(PACKAGE_NAME_CUTIN_MANAGER); intent.putExtra(CutinService.EXTRA_CUTIN_ACTION, item.serviceClass.getName()); intent.putExtra(CutinService.EXTRA_CUTIN_TITLE, item.cutinName); intent.putExtra(CutinService.EXTRA_CUTIN_ID, item.cutinId); return intent; } /** * カットインマネージャーからカットイン設定Activityを呼び出します。 */ public static boolean startActivityInAppSet(Context context , CutinItem item){ try{ context.startActivity(buildInAppSetIntent(item)); }catch(ActivityNotFoundException e){ return false; } return true; } /** * カットインマネージャーが存在するか否かを判定します。 */ public static boolean existManager(Context context){ PackageManager pm = context.getPackageManager(); Intent intent = pm.getLaunchIntentForPackage(PACKAGE_NAME_CUTIN_MANAGER); return intent != null; } /** * GooglePlayのカットインマネージャーに遷移するIntentを構築します。 */ public static Intent buildMarketIntent(){ Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=com.garlicg.cutin")); return intent; } /** * GooglePlayのカットインマネージャーページに遷移します。 */ public static void startActivityMarketOnCutinManagerPage(Context context){ Intent intent = buildMarketIntent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } /** * カットインマネージャーからアプリが起動したかを判定します。 */ public static boolean isCalledFromCutinManager(Intent intent){ if(intent == null) return false; String action = intent.getAction(); if(action == null) return false; if(action.equals(ACTION_PICK_CUTIN)){ return true; } else { return false; } } }