package com.konifar.materialcat.utils;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.LabeledIntent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;
import com.konifar.materialcat.R;
import java.util.ArrayList;
import java.util.List;
public class AppUtils {
private static final String TAG = AppUtils.class.getName();
private static final String PACKAGE_MMS = "mms";
private static final String PACKAGE_GMAIL = "android.gm";
private static final String PACKAGE_EMAIL = "android.email";
private static final String INTENT_TYPE_MSG = "message/rfc822";
private static final String INTENT_TYPE_TEXT = "text/plain";
public static void showToast(String message, Context context, int duration) {
if (message == null || message.length() == 0) return;
try {
Toast toast = Toast.makeText(context, message, duration);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} catch (Exception e) {
//
}
}
public static void showToast(int stringResId, Context context, int duration) {
showToast(context.getResources().getString(stringResId), context, duration);
}
public static void showToast(String message, Context context) {
showToast(message, context, Toast.LENGTH_LONG);
}
public static void showToast(int stringResId, Context context) {
showToast(context.getResources().getString(stringResId), context);
}
public static String getVersionName(Context context) {
try {
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return context.getString(R.string.version_prefix, packageInfo.versionName);
} catch (Exception e) {
Log.e(TAG, e.getMessage() + "");
return "";
}
}
public static void openMailChooser(Context context, String text, String[] mails, String subject) {
Intent mailIntent = new Intent();
mailIntent.setAction(Intent.ACTION_SEND);
mailIntent.putExtra(Intent.EXTRA_TEXT, text);
mailIntent.putExtra(Intent.EXTRA_EMAIL, mails);
mailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
mailIntent.setType(INTENT_TYPE_MSG);
PackageManager pm = context.getPackageManager();
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType(INTENT_TYPE_TEXT);
Intent openInChooser = Intent.createChooser(mailIntent, "");
List<ResolveInfo> resInfo = pm.queryIntentActivities(sendIntent, 0);
List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
for (ResolveInfo ri : resInfo) {
String packageName = ri.activityInfo.packageName;
if (packageName.contains(PACKAGE_EMAIL)) {
mailIntent.setPackage(packageName);
} else if (packageName.contains(PACKAGE_MMS) || packageName.contains(PACKAGE_GMAIL)) {
Intent intent = new Intent();
intent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
intent.setAction(Intent.ACTION_SEND);
intent.setType(INTENT_TYPE_TEXT);
if (packageName.contains(PACKAGE_MMS)) {
intent.putExtra("subject", subject);
intent.putExtra("sms_body", text);
intent.putExtra("address", mails[0]);
intent.setType(INTENT_TYPE_MSG);
} else if (packageName.contains(PACKAGE_GMAIL)) {
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_EMAIL, mails);
intent.setType(INTENT_TYPE_MSG);
}
intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
}
}
LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]);
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
context.startActivity(openInChooser);
}
public static void showWebPage(String url, Context context) {
if (TextUtils.isEmpty(url)) return;
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
public static String getGooglePlayUrl(String utmSource, String utmContent) {
Uri.Builder builder = new Uri.Builder();
builder.scheme("https");
builder.authority("play.google.com");
builder.path("/store/apps/details");
builder.appendQueryParameter("id", "com.konifar.materialcat");
if (utmSource != null && utmContent != null) {
StringBuffer sb = new StringBuffer();
sb.append("utm_source=");
sb.append(utmSource);
sb.append("&utm_medium=direct");
sb.append("&");
sb.append("utm_content=");
sb.append(utmContent);
builder.appendQueryParameter("referrer", sb.toString());
}
return builder.build().toString();
}
}