package de.andlabs.teleporter; import java.util.List; import de.andlabs.teleporter.R; import android.app.AlertDialog; import android.app.Dialog; 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 LogCollector { public static void feedback(final Context ctx, final String mail, final String additionalText) { final PackageManager packageManager = ctx.getPackageManager(); final Intent intent = new Intent("com.xtralogic.logcollector.intent.action.SEND_LOG"); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); final boolean isInstalled = list.size() > 0; if (isInstalled){ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("com.xtralogic.logcollector.intent.extra.SEND_INTENT_ACTION", Intent.ACTION_SENDTO); intent.putExtra("com.xtralogic.logcollector.intent.extra.DATA", Uri.parse("mailto:"+mail)); intent.putExtra("com.xtralogic.logcollector.intent.extra.ADDITIONAL_INFO", additionalText+" \n"); intent.putExtra(Intent.EXTRA_SUBJECT, "feedback "+ctx.getString(R.string.app_name)); intent.putExtra("com.xtralogic.logcollector.intent.extra.FORMAT", "time"); //The log can be filtered to contain data relevant only to your app /*String[] filterSpecs = new String[3]; filterSpecs[0] = "AndroidRuntime:E"; filterSpecs[1] = TAG + ":V"; filterSpecs[2] = "*:S"; intent.putExtra(EXTRA_FILTER_SPECS, filterSpecs);*/ ctx.startActivity(intent); } else { new AlertDialog.Builder(ctx) .setTitle(ctx.getString(R.string.app_name)) .setIcon(android.R.drawable.ic_dialog_info) .setMessage("Install open source Log Collector application to collect the device log and send it to the developer.") .setPositiveButton("Install", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int whichButton){ Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.xtralogic.android.logcollector")); marketIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ctx.startActivity(marketIntent); } }) .setNegativeButton("Just Mail", new Dialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+mail)); intent.putExtra(Intent.EXTRA_SUBJECT, "feedback "+ctx.getString(R.string.app_name)); intent.putExtra(Intent.EXTRA_TEXT, additionalText); ctx.startActivity(intent); }} ) .show(); } } }