1package eu.siacs.conversations.utils;
2
3import android.app.Activity;
4import android.content.ActivityNotFoundException;
5import android.content.Context;
6import android.content.Intent;
7import android.content.pm.PackageManager;
8import android.net.Uri;
9import android.widget.Toast;
10
11import eu.siacs.conversations.R;
12import me.drakeet.support.toast.ToastCompat;
13
14public class TorServiceUtils {
15
16 private static final String URI_ORBOT = "org.torproject.android";
17 private static final Uri ORBOT_PLAYSTORE_URI = Uri.parse("market://details?id=" + URI_ORBOT);
18 private static final String ACTION_START_TOR = "org.torproject.android.START_TOR";
19
20 public static final Intent INSTALL_INTENT = new Intent(Intent.ACTION_VIEW, ORBOT_PLAYSTORE_URI);
21 public static final Intent LAUNCH_INTENT = new Intent(ACTION_START_TOR);
22
23 public static final String ACTION_STATUS = "org.torproject.android.intent.action.STATUS";
24 public static final String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS";
25
26 public static boolean isOrbotInstalled(final Context context) {
27 try {
28 context.getPackageManager().getPackageInfo(URI_ORBOT, PackageManager.GET_ACTIVITIES);
29 return true;
30 } catch (final PackageManager.NameNotFoundException e) {
31 return false;
32 }
33 }
34
35 public static void downloadOrbot(Activity activity, int requestCode) {
36 try {
37 activity.startActivityForResult(INSTALL_INTENT, requestCode);
38 } catch (final ActivityNotFoundException e) {
39 ToastCompat.makeText(
40 activity, R.string.no_market_app_installed, ToastCompat.LENGTH_SHORT)
41 .show();
42 }
43 }
44
45 public static void startOrbot(final Activity activity, final int requestCode) {
46 try {
47 activity.startActivityForResult(LAUNCH_INTENT, requestCode);
48 } catch (final ActivityNotFoundException e) {
49 Toast.makeText(activity, R.string.install_orbot, Toast.LENGTH_LONG).show();
50 }
51 }
52}