package info.guardianproject.securereaderinterface.ui; import java.util.List; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; public class PackageHelper { public static final String URI_CHATSECURE = "info.guardianproject.otr.app.im"; public static final String URI_CHATSECURE_PLAY = "market://search?q=pname:info.guardianproject.otr.app.im"; public static final String URI_ORWEB = "info.guardianproject.browser"; public static final String URI_ORWEB_PLAY = "market://search?q=pname:info.guardianproject.browser"; public static final String URI_FBREADER_PLAY = "https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android"; public static final String URI_FBREADER_WEB = "http://fbreader.org/FBReaderJ"; public static boolean isChatSecureInstalled(Context context) { return isAppInstalled(context, URI_CHATSECURE); } public static boolean isOrwebInstalled(Context context) { return isAppInstalled(context, URI_ORWEB); } private static boolean isAppInstalled(Context context, String uri) { PackageManager pm = context.getPackageManager(); boolean installed = false; try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); installed = true; } catch (PackageManager.NameNotFoundException e) { installed = false; } return installed; } public static boolean canIntentBeHandled(Context context, Intent intent) { PackageManager manager = context.getPackageManager(); List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0); return (infos.size() > 0); } public static AlertDialog showDownloadDialog(final Context context, int installChatSecureTitle, int installChatSecurePrompt, int ok, int cancel, final String uriString) { AlertDialog.Builder downloadDialog = new AlertDialog.Builder(context); downloadDialog.setTitle(installChatSecureTitle); downloadDialog.setMessage(installChatSecurePrompt); downloadDialog.setPositiveButton(ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int i) { Uri uri = Uri.parse(uriString); Intent intent = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(intent); } }); downloadDialog.setNegativeButton(cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int i) { } }); return downloadDialog.show(); } }