/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.util; import java.util.Iterator; import java.util.List; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.net.Uri; import android.util.Log; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class PlayStoreInstaller { private static final Uri PLAY_STORE_TEST_URI = Uri.parse("market://search?q=com.android.youtube"); private static boolean canResolveIntent(PackageManager packagemanager, Intent intent) { if(null == intent) { return false; } List list = packagemanager.queryIntentActivities(intent, 0); return null != list && !list.isEmpty(); } public static Intent getContinueIntent(PackageManager packagemanager, String s, String s1, String s2) { Intent intent = new Intent("com.google.android.apps.plus.VIEW_DEEP_LINK"); intent.setPackage(s); intent.setData(Uri.parse("vnd.google.deeplink://link/").buildUpon().appendQueryParameter("deep_link_id", s1).appendQueryParameter("gplus_source", s2).build()); intent.addFlags(0x14000000); if(!canResolveIntent(packagemanager, intent)) intent = null; return intent; } public static Intent getInstallIntent(String s) { Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(String.format("market://details?id=%1$s", new Object[] { s }))); intent.putExtra("use_direct_purchase", true); intent.addFlags(0x80000); return intent; } public static boolean isPackageInstalled(PackageManager packagemanager, String s) { for(Iterator iterator = packagemanager.getInstalledApplications(128).iterator(); iterator.hasNext();) { if(((ApplicationInfo)iterator.next()).packageName.equals(s)) { return true; } } return false; } public static boolean isPlayStoreInstalled(PackageManager packagemanager) { try { ApplicationInfo applicationinfo = packagemanager.getApplicationInfo("com.android.vending", 0); return null != applicationinfo && canResolveIntent(packagemanager, new Intent("android.intent.action.VIEW", PLAY_STORE_TEST_URI)); } catch (android.content.pm.PackageManager.NameNotFoundException namenotfoundexception) { if(EsLog.isLoggable("DeepLinking", 3)) { Log.d("DeepLinking", (new StringBuilder("com.android.vending not found: ")).append(namenotfoundexception.getMessage()).toString()); } return false; } } public static void notifyCompletedInstall(Context context, String s, String s1, String s2, String s3, String s4) { int i; long l; String s5; Notification notification; PendingIntent pendingintent; NotificationManager notificationmanager; Object aobj[]; PackageManager packagemanager = context.getPackageManager(); Intent intent = getContinueIntent(packagemanager, s2, s3, s4); if(intent == null) { intent = packagemanager.getLaunchIntentForPackage(s2); intent.addFlags(0x14000000); if(!canResolveIntent(packagemanager, intent)) intent = null; if(Log.isLoggable("DeepLinking", 3)) Log.d("DeepLinking", (new StringBuilder("Could not resolve continue Intent for ")).append(s2).append(" falling back to launch ").append(intent).toString()); } i = (int)System.currentTimeMillis(); l = System.currentTimeMillis(); s5 = context.getString(R.string.source_app_installed_notification, new Object[] { s1, s }); notification = new Notification(R.drawable.ic_stat_gplus, s5, l); pendingintent = PendingIntent.getActivity(context, i, intent, 0); notification.setLatestEventInfo(context, context.getString(R.string.app_name), s5, pendingintent); notification.flags = 0x10 | notification.flags; notification.defaults = 4 | notification.defaults; notificationmanager = (NotificationManager)context.getSystemService("notification"); aobj = new Object[2]; aobj[0] = context.getPackageName(); aobj[1] = s2; notificationmanager.notify(String.format("%s:notifications:%s", aobj), 1000, notification); } }