[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [orbot/master] Fixed most warnings and errors in OrbotMainActivity.
commit 469d4cfaf2e645723e00347522b67047885e924e
Author: Benjamin Erhart <berhart@xxxxxxxxxxxxxxxxxxx>
Date: Thu Apr 16 17:34:59 2020 +0200
Fixed most warnings and errors in OrbotMainActivity.
---
.../org/torproject/android/OrbotMainActivity.java | 933 ++++++++++-----------
1 file changed, 444 insertions(+), 489 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 831f55f9..ff23beed 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -23,17 +23,16 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
-import android.os.RemoteException;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
-import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnLongClickListener;
+import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
@@ -45,13 +44,17 @@ import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
+
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;
import androidx.appcompat.widget.Toolbar;
+import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
+
import org.json.JSONArray;
import org.torproject.android.service.OrbotConstants;
import org.torproject.android.service.OrbotService;
@@ -73,7 +76,6 @@ import org.torproject.android.ui.hiddenservices.permissions.PermissionManager;
import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
import org.torproject.android.ui.onboarding.BridgeWizardActivity;
import org.torproject.android.ui.onboarding.OnboardingActivity;
-import pl.bclogic.pulsator4droid.library.PulsatorLayout;
import java.io.BufferedReader;
import java.io.File;
@@ -87,6 +89,8 @@ import java.util.ArrayList;
import java.util.Locale;
import java.util.StringTokenizer;
+import pl.bclogic.pulsator4droid.library.PulsatorLayout;
+
import static androidx.core.content.FileProvider.getUriForFile;
import static org.torproject.android.MainConstants.COUNTRY_CODES;
import static org.torproject.android.MainConstants.RESULT_CLOSE_ALL;
@@ -106,14 +110,14 @@ public class OrbotMainActivity extends AppCompatActivity
private TextView uploadText = null;
private TextView mTxtOrbotLog = null;
- private Button mBtnStart = null;
+ private Button mBtnStart = null;
- private SwitchCompat mBtnVPN = null;
+ private SwitchCompat mBtnVPN = null;
private SwitchCompat mBtnBridges = null;
-
+
private Spinner spnCountries = null;
- private DrawerLayout mDrawer;
+ private DrawerLayout mDrawer;
/* Some tracking bits */
private String torStatus = null; //latest status reported from the tor service
@@ -122,12 +126,12 @@ public class OrbotMainActivity extends AppCompatActivity
private SharedPreferences mPrefs = null;
private boolean autoStartFromIntent = false;
-
+
private final static int REQUEST_VPN = 8888;
private final static int REQUEST_SETTINGS = 0x9874;
private final static int REQUEST_VPN_APPS_SELECT = 8889;
- private final static int LOG_DRAWER_GRAVITY = Gravity.END;
+ private final static int LOG_DRAWER_GRAVITY = GravityCompat.END;
// message types for mStatusUpdateHandler
private final static int STATUS_UPDATE = 1;
@@ -136,7 +140,7 @@ public class OrbotMainActivity extends AppCompatActivity
public final static String INTENT_ACTION_REQUEST_HIDDEN_SERVICE = "org.torproject.android.REQUEST_HS_PORT";
- public final static String INTENT_ACTION_REQUEST_START_TOR = "org.torproject.android.START_TOR";
+ public final static String INTENT_ACTION_REQUEST_START_TOR = "org.torproject.android.START_TOR";
PulsatorLayout mPulsator;
@@ -157,7 +161,7 @@ public class OrbotMainActivity extends AppCompatActivity
Editor pEdit = mPrefs.edit();
pEdit.remove("pref_hs_ports");
- pEdit.commit();
+ pEdit.apply();
}
}
@@ -173,11 +177,11 @@ public class OrbotMainActivity extends AppCompatActivity
/* Create the widgets before registering for broadcasts to guarantee
* that the widgets exist when the status updates try to update them */
- doLayout();
+ doLayout();
- /* receive the internal status broadcasts, which are separate from the public
- * status broadcasts to prevent other apps from sending fake/wrong status
- * info to this app */
+ /* receive the internal status broadcasts, which are separate from the public
+ * status broadcasts to prevent other apps from sending fake/wrong status
+ * info to this app */
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
lbm.registerReceiver(mLocalBroadcastReceiver,
new IntentFilter(TorServiceConstants.ACTION_STATUS));
@@ -189,32 +193,28 @@ public class OrbotMainActivity extends AppCompatActivity
new IntentFilter(TorServiceConstants.LOCAL_ACTION_PORTS));
-
boolean showFirstTime = mPrefs.getBoolean("connect_first_time", true);
- if (showFirstTime)
- {
+ if (showFirstTime) {
Editor pEdit = mPrefs.edit();
pEdit.putBoolean("connect_first_time", false);
- pEdit.commit();
- startActivity(new Intent(this,OnboardingActivity.class));
+ pEdit.apply();
+ startActivity(new Intent(this, OnboardingActivity.class));
}
- /**
- * Resets previous DNS Port to the default
- */
+ // Resets previous DNS Port to the default.
getSharedPrefs(getApplicationContext()).edit().putInt(VpnPrefs.PREFS_DNS_PORT,
VpnConstants.TOR_DNS_PORT_DEFAULT).apply();
}
- private void sendIntentToService(final String action) {
+ private void sendIntentToService(final String action) {
Intent intent = new Intent(OrbotMainActivity.this, OrbotService.class);
intent.setAction(action);
startService(intent);
- }
+ }
private void stopTor() {
@@ -239,61 +239,68 @@ public class OrbotMainActivity extends AppCompatActivity
if (action == null)
return;
- if (action.equals(TorServiceConstants.LOCAL_ACTION_LOG)) {
- Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
- msg.obj = intent.getStringExtra(TorServiceConstants.LOCAL_EXTRA_LOG);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
- mStatusUpdateHandler.sendMessage(msg);
-
- } else if (action.equals(TorServiceConstants.LOCAL_ACTION_BANDWIDTH)) {
- long upload = intent.getLongExtra("up", 0);
- long download = intent.getLongExtra("down", 0);
- long written = intent.getLongExtra("written", 0);
- long read = intent.getLongExtra("read", 0);
-
- Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_TRAFFIC_COUNT);
- msg.getData().putLong("download", download);
- msg.getData().putLong("upload", upload);
- msg.getData().putLong("readTotal", read);
- msg.getData().putLong("writeTotal", written);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
- mStatusUpdateHandler.sendMessage(msg);
-
- } else if (action.equals(TorServiceConstants.ACTION_STATUS)) {
- lastStatusIntent = intent;
-
- Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
- msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
- mStatusUpdateHandler.sendMessage(msg);
- }
- else if (action.equals(TorServiceConstants.LOCAL_ACTION_PORTS)) {
+ switch (action) {
+ case TorServiceConstants.LOCAL_ACTION_LOG: {
+ Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
+ msg.obj = intent.getStringExtra(TorServiceConstants.LOCAL_EXTRA_LOG);
+ msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
+ mStatusUpdateHandler.sendMessage(msg);
+
+ break;
+ }
+ case TorServiceConstants.LOCAL_ACTION_BANDWIDTH: {
+ long upload = intent.getLongExtra("up", 0);
+ long download = intent.getLongExtra("down", 0);
+ long written = intent.getLongExtra("written", 0);
+ long read = intent.getLongExtra("read", 0);
+
+ Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_TRAFFIC_COUNT);
+ msg.getData().putLong("download", download);
+ msg.getData().putLong("upload", upload);
+ msg.getData().putLong("readTotal", read);
+ msg.getData().putLong("writeTotal", written);
+ msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
+
+ mStatusUpdateHandler.sendMessage(msg);
+
+ break;
+ }
+ case TorServiceConstants.ACTION_STATUS: {
+ lastStatusIntent = intent;
+
+ Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
+ msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
+
+ mStatusUpdateHandler.sendMessage(msg);
+ break;
+ }
+ case TorServiceConstants.LOCAL_ACTION_PORTS: {
- Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_PORTS);
- msg.getData().putInt("socks",intent.getIntExtra(OrbotService.EXTRA_SOCKS_PROXY_PORT,-1));
- msg.getData().putInt("http",intent.getIntExtra(OrbotService.EXTRA_HTTP_PROXY_PORT,-1));
+ Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_PORTS);
+ msg.getData().putInt("socks", intent.getIntExtra(OrbotService.EXTRA_SOCKS_PROXY_PORT, -1));
+ msg.getData().putInt("http", intent.getIntExtra(OrbotService.EXTRA_HTTP_PROXY_PORT, -1));
- mStatusUpdateHandler.sendMessage(msg);
+ mStatusUpdateHandler.sendMessage(msg);
+ break;
+ }
}
}
};
-
- private void doLayout ()
- {
+
+ private void doLayout() {
setContentView(R.layout.layout_main);
-
+
setTitle(R.string.app_name);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
-
- mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- mTxtOrbotLog = (TextView)findViewById(R.id.orbotLog);
-
- lblStatus = (TextView)findViewById(R.id.lblStatus);
+ mDrawer = findViewById(R.id.drawer_layout);
+
+ mTxtOrbotLog = findViewById(R.id.orbotLog);
+
+ lblStatus = findViewById(R.id.lblStatus);
lblStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -303,39 +310,39 @@ public class OrbotMainActivity extends AppCompatActivity
lblPorts = findViewById(R.id.lblPorts);
- imgStatus = (ImageView)findViewById(R.id.imgStatus);
+ imgStatus = findViewById(R.id.imgStatus);
imgStatus.setOnLongClickListener(this);
- downloadText = (TextView)findViewById(R.id.trafficDown);
- uploadText = (TextView)findViewById(R.id.trafficUp);
-
- downloadText.setText(formatCount(0) + " / " + formatTotal(0));
- uploadText.setText(formatCount(0) + " / " + formatTotal(0));
-
- mBtnStart =(Button)findViewById(R.id.btnStart);
- mBtnStart.setOnClickListener(new View.OnClickListener()
- {
- @Override
- public void onClick(View v) {
-
- if (torStatus == TorServiceConstants.STATUS_OFF) {
- lblStatus.setText(getString(R.string.status_starting_up));
- startTor();
- } else {
- lblStatus.setText(getString(R.string.status_shutting_down));
- stopTor();
- }
- }
- });
-
- mBtnVPN = (SwitchCompat)findViewById(R.id.btnVPN);
-
+ downloadText = findViewById(R.id.trafficDown);
+ uploadText = findViewById(R.id.trafficUp);
+
+ String zero = String.format("%s / %s", formatCount(0), formatTotal(0));
+ downloadText.setText(zero);
+ uploadText.setText(zero);
+
+ mBtnStart = findViewById(R.id.btnStart);
+ mBtnStart.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ if (torStatus.equals(TorServiceConstants.STATUS_OFF)) {
+ lblStatus.setText(getString(R.string.status_starting_up));
+ startTor();
+ } else {
+ lblStatus.setText(getString(R.string.status_shutting_down));
+ stopTor();
+ }
+ }
+ });
+
+ mBtnVPN = findViewById(R.id.btnVPN);
+
boolean useVPN = Prefs.useVpn();
mBtnVPN.setChecked(useVPN);
//auto start VPN if VPN is enabled
if (useVPN) {
- startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class));
+ startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
}
mBtnVPN.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@@ -346,43 +353,39 @@ public class OrbotMainActivity extends AppCompatActivity
});
- mBtnBridges = (SwitchCompat)findViewById(R.id.btnBridges);
- mBtnBridges.setChecked(Prefs.bridgesEnabled());
- mBtnBridges.setOnClickListener(new View.OnClickListener ()
- {
+ mBtnBridges = findViewById(R.id.btnBridges);
+ mBtnBridges.setChecked(Prefs.bridgesEnabled());
+ mBtnBridges.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ promptSetupBridges(); //if ARM processor, show all bridge options
+ }
- @Override
- public void onClick(View v) {
- promptSetupBridges (); //if ARM processor, show all bridge options
- }
-
- });
+ });
- spnCountries = (Spinner)findViewById(R.id.spinnerCountry);
+ spnCountries = findViewById(R.id.spinnerCountry);
setCountrySpinner();
- mPulsator = (PulsatorLayout) findViewById(R.id.pulsator);
+ mPulsator = findViewById(R.id.pulsator);
}
- private void setCountrySpinner ()
- {
+ private void setCountrySpinner() {
String currentExit = Prefs.getExitNodes();
- if (currentExit.length() > 4)
- {
+ if (currentExit.length() > 4) {
//someone put a complex value in, so let's disable
- ArrayList<String> cList = new ArrayList<String>();
+ ArrayList<String> cList = new ArrayList<>();
cList.add(0, currentExit);
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cList);
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, cList);
spnCountries.setAdapter(adapter);
spnCountries.setEnabled(false);
- }
- else {
+ } else {
int selIdx = -1;
- ArrayList<String> cList = new ArrayList<String>();
+ ArrayList<String> cList = new ArrayList<>();
cList.add(0, getString(R.string.vpn_default_world));
for (int i = 0; i < COUNTRY_CODES.length; i++) {
@@ -393,11 +396,11 @@ public class OrbotMainActivity extends AppCompatActivity
selIdx = i + 1;
}
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cList);
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, cList);
spnCountries.setAdapter(adapter);
if (selIdx > 0)
- spnCountries.setSelection(selIdx,true);
+ spnCountries.setSelection(selIdx, true);
spnCountries.setOnItemSelectedListener(new OnItemSelectedListener() {
@@ -412,7 +415,7 @@ public class OrbotMainActivity extends AppCompatActivity
mOldPosition = position; //new position!
- String country = null;
+ String country;
if (position == 0)
country = "";
@@ -440,10 +443,10 @@ public class OrbotMainActivity extends AppCompatActivity
super.attachBaseContext(LocaleHelper.onAttach(base));
}
- /*
- * Create the UI Options Menu (non-Javadoc)
- * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
- */
+ /*
+ * Create the UI Options Menu (non-Javadoc)
+ * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
+ */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
@@ -451,99 +454,85 @@ public class OrbotMainActivity extends AppCompatActivity
inflater.inflate(R.menu.orbot_main, menu);
return true;
}
-
-
+
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
+ public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == R.id.menu_newnym)
- {
+ if (item.getItemId() == R.id.menu_newnym) {
requestNewTorIdentity();
- }
- else if (item.getItemId() == R.id.menu_settings)
- {
- Intent intent = new Intent(OrbotMainActivity.this, SettingsPreferences.class);
- startActivityForResult(intent, REQUEST_SETTINGS);
- }
- else if (item.getItemId() == R.id.menu_exit)
- {
- //exit app
- doExit();
-
- }
- else if (item.getItemId() == R.id.menu_about)
- {
- showAbout();
-
-
- }
- else if (item.getItemId() == R.id.menu_scan)
- {
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.initiateScan();
- }
- else if (item.getItemId() == R.id.menu_share_bridge)
- {
-
- String bridges = Prefs.getBridgesList();
-
- if (bridges != null && bridges.length() > 0)
- {
- try {
- bridges = "bridge://" + URLEncoder.encode(bridges,"UTF-8");
-
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.shareText(bridges);
-
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- } else if (item.getItemId() == R.id.menu_hidden_services) {
- startActivity(new Intent(this, HiddenServicesActivity.class));
- } else if (item.getItemId() == R.id.menu_client_cookies) {
- startActivity(new Intent(this, ClientCookiesActivity.class));
- }
-
- return super.onOptionsItemSelected(item);
- }
-
- private void showAbout ()
- {
-
- LayoutInflater li = LayoutInflater.from(this);
- View view = li.inflate(R.layout.layout_about, null);
-
- String version = "";
-
- try {
- version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName + " (Tor " + OrbotService.BINARY_TOR_VERSION + ")";
- } catch (NameNotFoundException e) {
- version = "Version Not Found";
- }
-
- TextView versionName = (TextView)view.findViewById(R.id.versionName);
- versionName.setText(version);
+ } else if (item.getItemId() == R.id.menu_settings) {
+ Intent intent = new Intent(OrbotMainActivity.this, SettingsPreferences.class);
+ startActivityForResult(intent, REQUEST_SETTINGS);
+ } else if (item.getItemId() == R.id.menu_exit) {
+ //exit app
+ doExit();
+
+ } else if (item.getItemId() == R.id.menu_about) {
+ showAbout();
+
- TextView aboutOther = (TextView)view.findViewById(R.id.aboutother);
+ } else if (item.getItemId() == R.id.menu_scan) {
+ IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
+ integrator.initiateScan();
+ } else if (item.getItemId() == R.id.menu_share_bridge) {
- try
- {
- String aboutText = readFromAssets(this,"LICENSE");
- aboutText = aboutText.replace("\n","<br/>");
- aboutOther.setText(Html.fromHtml(aboutText));
+ String bridges = Prefs.getBridgesList();
+
+ if (bridges != null && bridges.length() > 0) {
+ try {
+ bridges = "bridge://" + URLEncoder.encode(bridges, "UTF-8");
+
+ IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
+ integrator.shareText(bridges);
+
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
}
- catch (Exception e){}
-
- new AlertDialog.Builder(this)
- .setTitle(getString(R.string.button_about))
- .setView(view)
- .show();
+
+ } else if (item.getItemId() == R.id.menu_hidden_services) {
+ startActivity(new Intent(this, HiddenServicesActivity.class));
+ } else if (item.getItemId() == R.id.menu_client_cookies) {
+ startActivity(new Intent(this, ClientCookiesActivity.class));
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void showAbout() {
+
+ LayoutInflater li = LayoutInflater.from(this);
+ View view = li.inflate(R.layout.layout_about, (ViewGroup) lblStatus.getRootView());
+
+ String version;
+
+ try {
+ version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName + " (Tor " + OrbotService.BINARY_TOR_VERSION + ")";
+ } catch (NameNotFoundException e) {
+ version = "Version Not Found";
}
+ TextView versionName = view.findViewById(R.id.versionName);
+ versionName.setText(version);
+
+ TextView aboutOther = view.findViewById(R.id.aboutother);
+
+ try {
+ String aboutText = readFromAssets(this, "LICENSE");
+ aboutText = aboutText.replace("\n", "<br/>");
+ aboutOther.setText(Html.fromHtml(aboutText));
+ } catch (Exception e) {
+ // This should not happen. Ignore.
+ }
+
+ new AlertDialog.Builder(this)
+ .setTitle(getString(R.string.button_about))
+ .setView(view)
+ .show();
+ }
+
+ @SuppressWarnings("SameParameterValue")
private static String readFromAssets(Context context, String filename) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename)));
@@ -551,7 +540,7 @@ public class OrbotMainActivity extends AppCompatActivity
StringBuilder sb = new StringBuilder();
String mLine = reader.readLine();
while (mLine != null) {
- sb.append(mLine + '\n'); // process line
+ sb.append(mLine).append('\n'); // process line
mLine = reader.readLine();
}
reader.close();
@@ -575,19 +564,16 @@ public class OrbotMainActivity extends AppCompatActivity
finish();
}
- protected void onPause() {
- try
- {
- super.onPause();
-
- if (aDialog != null)
- aDialog.dismiss();
- }
- catch (IllegalStateException ise)
- {
- //can happen on exit/shutdown
- }
- }
+ protected void onPause() {
+ try {
+ super.onPause();
+
+ if (aDialog != null)
+ aDialog.dismiss();
+ } catch (IllegalStateException ise) {
+ //can happen on exit/shutdown
+ }
+ }
@Override
@@ -595,20 +581,17 @@ public class OrbotMainActivity extends AppCompatActivity
// check to see if the log is open, if so close it
if (mDrawer.isDrawerOpen(LOG_DRAWER_GRAVITY)) {
mDrawer.closeDrawers();
- }
- else {
+ } else {
super.onBackPressed();
}
}
- private void refreshVPNApps ()
- {
+ private void refreshVPNApps() {
TorVpnService.stop(this);
startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
}
- private void enableVPN (boolean enable)
- {
+ private void enableVPN(boolean enable) {
Prefs.putUseVpn(enable);
if (enable) {
@@ -623,7 +606,7 @@ public class OrbotMainActivity extends AppCompatActivity
String hsName, final int hsPort, int hsRemotePort,
final String backupToPackage, final Uri hsKeyPath,
final Boolean authCookie
- ) throws RemoteException, InterruptedException {
+ ) {
String onionHostname = null;
@@ -682,7 +665,6 @@ public class OrbotMainActivity extends AppCompatActivity
try {
Thread.sleep(3000); //wait three seconds
} catch (Exception e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
@@ -698,7 +680,7 @@ public class OrbotMainActivity extends AppCompatActivity
onion.moveToNext();
hostname = onion.getString(onion.getColumnIndex(HSContentProvider.HiddenService.DOMAIN));
- if(hostname == null || hostname.length() < 1)
+ if (hostname == null || hostname.length() < 1)
continue;
nResult.putExtra("hs_host", hostname);
@@ -765,28 +747,17 @@ public class OrbotMainActivity extends AppCompatActivity
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case DialogInterface.BUTTON_POSITIVE:
- try {
- enableHiddenServicePort(
- hiddenServiceName, hiddenServicePort,
- hiddenServiceRemotePort, backupToPackage,
- mKeyUri, authCookie
- );
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- break;
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ enableHiddenServicePort(
+ hiddenServiceName, hiddenServicePort,
+ hiddenServiceRemotePort, backupToPackage,
+ mKeyUri, authCookie
+ );
}
}
};
- String requestMsg = getString(R.string.hidden_service_request, hiddenServicePort);
+ String requestMsg = getString(R.string.hidden_service_request, String.valueOf(hiddenServicePort));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(requestMsg).setPositiveButton("Allow", dialogClickListener)
.setNegativeButton("Deny", dialogClickListener).show();
@@ -803,11 +774,13 @@ public class OrbotMainActivity extends AppCompatActivity
if (urlString != null) {
- if (urlString.toLowerCase().startsWith("bridge://"))
-
- {
+ if (urlString.toLowerCase().startsWith("bridge://")) {
String newBridgeValue = urlString.substring(9); //remove the bridge protocol piece
- newBridgeValue = URLDecoder.decode(newBridgeValue); //decode the value here
+ try {
+ newBridgeValue = URLDecoder.decode(newBridgeValue, "UTF-8"); //decode the value here
+ } catch (UnsupportedEncodingException e) {
+ // This cannot happen, UTF-8 is supported since Android 1.
+ }
showAlert(getString(R.string.bridges_updated), getString(R.string.restart_orbot_to_use_this_bridge_) + newBridgeValue, false);
@@ -835,58 +808,55 @@ public class OrbotMainActivity extends AppCompatActivity
enableBridges(true);
}
- /*
- * Launch the system activity for Uri viewing with the provided url
- */
- private void openBrowser(final String browserLaunchUrl,boolean forceExternal, String pkgId) {
- if (pkgId != null) {
- startIntent(pkgId,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
+ /*
+ * Launch the system activity for Uri viewing with the provided url
+ */
+ @SuppressWarnings("SameParameterValue")
+ private void openBrowser(final String browserLaunchUrl, boolean forceExternal, String pkgId) {
+ if (pkgId != null) {
+ startIntent(pkgId, Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
+ } else if (mBtnVPN.isChecked() || forceExternal) {
+ //use the system browser since VPN is on
+ startIntent(null, Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
}
- else if (mBtnVPN.isChecked()||forceExternal) {
- //use the system browser since VPN is on
- startIntent(null,Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
- }
- }
-
- private void startIntent (String pkg, String action, Uri data)
- {
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private void startIntent(String pkg, String action, Uri data) {
Intent i;
- PackageManager pm = getPackageManager();
+ PackageManager pm = getPackageManager();
try {
- if (pkg != null) {
- i = pm.getLaunchIntentForPackage(pkg);
- if (i == null)
- throw new PackageManager.NameNotFoundException();
- }
- else
- {
- i = new Intent();
- }
+ if (pkg != null) {
+ i = pm.getLaunchIntentForPackage(pkg);
+ if (i == null)
+ throw new PackageManager.NameNotFoundException();
+ } else {
+ i = new Intent();
+ }
i.setAction(action);
i.setData(data);
- if (i.resolveActivity(pm)!=null)
- startActivity(i);
+ if (i.resolveActivity(pm) != null)
+ startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
-
+ // Should not occur. Ignore.
}
}
-
+
@Override
protected void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
- if (request == REQUEST_SETTINGS && response == RESULT_OK)
- {
+ if (request == REQUEST_SETTINGS && response == RESULT_OK) {
if (data != null && (!TextUtils.isEmpty(data.getStringExtra("locale")))) {
String newLocale = data.getStringExtra("locale");
Prefs.setDefaultLocale(newLocale);
Languages.setLanguage(this, newLocale, true);
- // Language.setFromPreference(this, "pref_default_locale");
+ // Language.setFromPreference(this, "pref_default_locale");
finish();
@@ -895,106 +865,88 @@ public class OrbotMainActivity extends AppCompatActivity
@Override
public void run() {
//Do something after 100ms
- startActivity(new Intent(OrbotMainActivity.this,OrbotMainActivity.class));
+ startActivity(new Intent(OrbotMainActivity.this, OrbotMainActivity.class));
}
}, 1000);
}
- }
- else if (request == REQUEST_VPN)
- {
- if (response == RESULT_OK) {
+ } else if (request == REQUEST_VPN) {
+ if (response == RESULT_OK) {
TorVpnService.start(this);
+ } else if (response == VPNEnableActivity.ACTIVITY_RESULT_VPN_DENIED) {
+ mBtnVPN.setChecked(false);
+ Prefs.putUseVpn(false);
}
- else if (response == VPNEnableActivity.ACTIVITY_RESULT_VPN_DENIED)
- {
- mBtnVPN.setChecked(false);
- Prefs.putUseVpn(false);
- }
- }
- else if (request == REQUEST_VPN_APPS_SELECT)
- {
+ } else if (request == REQUEST_VPN_APPS_SELECT) {
if (response == RESULT_OK &&
- torStatus == TorServiceConstants.STATUS_ON)
+ torStatus.equals(TorServiceConstants.STATUS_ON))
refreshVPNApps();
}
-
+
IntentResult scanResult = IntentIntegrator.parseActivityResult(request, response, data);
if (scanResult != null) {
- // handle scan result
-
- String results = scanResult.getContents();
-
- if (results != null && results.length() > 0)
- {
- try {
-
- int urlIdx = results.indexOf("://");
-
- if (urlIdx!=-1)
- {
- results = URLDecoder.decode(results, "UTF-8");
- results = results.substring(urlIdx+3);
-
- showAlert(getString(R.string.bridges_updated),getString(R.string.restart_orbot_to_use_this_bridge_) + results,false);
-
- setNewBridges(results);
- }
- else
- {
- JSONArray bridgeJson = new JSONArray(results);
- StringBuffer bridgeLines = new StringBuffer();
-
- for (int i = 0; i < bridgeJson.length(); i++)
- {
- String bridgeLine = bridgeJson.getString(i);
- bridgeLines.append(bridgeLine).append("\n");
- }
-
- setNewBridges(bridgeLines.toString());
- }
-
-
- } catch (Exception e) {
- Log.e(TAG,"unsupported",e);
- }
- }
-
- }
-
+ // handle scan result
+
+ String results = scanResult.getContents();
+
+ if (results != null && results.length() > 0) {
+ try {
+
+ int urlIdx = results.indexOf("://");
+
+ if (urlIdx != -1) {
+ results = URLDecoder.decode(results, "UTF-8");
+ results = results.substring(urlIdx + 3);
+
+ showAlert(getString(R.string.bridges_updated), getString(R.string.restart_orbot_to_use_this_bridge_) + results, false);
+
+ setNewBridges(results);
+ } else {
+ JSONArray bridgeJson = new JSONArray(results);
+ StringBuilder bridgeLines = new StringBuilder();
+
+ for (int i = 0; i < bridgeJson.length(); i++) {
+ String bridgeLine = bridgeJson.getString(i);
+ bridgeLines.append(bridgeLine).append("\n");
+ }
+
+ setNewBridges(bridgeLines.toString());
+ }
+
+
+ } catch (Exception e) {
+ Log.e(TAG, "unsupported", e);
+ }
+ }
+
+ }
+
}
-
- public void promptSetupBridges ()
- {
- if (mBtnBridges.isChecked())
- {
+ public void promptSetupBridges() {
+
+ if (mBtnBridges.isChecked()) {
Prefs.putBridgesEnabled(true);
startActivity(new Intent(this, BridgeWizardActivity.class));
+ } else {
+ enableBridges(false);
}
- else
- {
- enableBridges(false);
- }
-
+
}
-
-
- private void enableBridges (boolean enable)
- {
- Prefs.putBridgesEnabled(enable);
-
- if (torStatus == TorServiceConstants.STATUS_ON)
- {
- String bridgeList = Prefs.getBridgesList();
- if (bridgeList != null && bridgeList.length() > 0)
- {
- requestTorRereadConfig ();
- }
- }
+
+
+ private void enableBridges(boolean enable) {
+ Prefs.putBridgesEnabled(enable);
+
+ if (torStatus.equals(TorServiceConstants.STATUS_ON)) {
+ String bridgeList = Prefs.getBridgesList();
+ if (bridgeList != null && bridgeList.length() > 0) {
+ requestTorRereadConfig();
+ }
+ }
}
private void requestTorRereadConfig() {
@@ -1010,54 +962,51 @@ public class OrbotMainActivity extends AppCompatActivity
setCountrySpinner();
- requestTorStatus();
+ requestTorStatus();
- if (torStatus == null)
- updateStatus("", TorServiceConstants.STATUS_STOPPING);
+ if (torStatus == null)
+ updateStatus("", TorServiceConstants.STATUS_STOPPING);
else
updateStatus(null, torStatus);
- addAppShortcuts();
+ addAppShortcuts();
- //now you can handle the intents properly
- handleIntents();
+ //now you can handle the intents properly
+ handleIntents();
- }
+ }
AlertDialog aDialog = null;
-
+
//general alert dialog for mostly Tor warning messages
//sometimes this can go haywire or crazy with too many error
//messages from Tor, and the user cannot stop or exit Orbot
//so need to ensure repeated error messages are not spamming this method
- private void showAlert(String title, String msg, boolean button)
- {
- try
- {
- if (aDialog != null && aDialog.isShowing())
- aDialog.dismiss();
- }
- catch (Exception e){} //swallow any errors
-
- if (button)
- {
- aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setIcon(R.drawable.onion32)
- .setTitle(title)
- .setMessage(msg)
- .setPositiveButton(R.string.btn_okay, null)
- .show();
- }
- else
- {
- aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setIcon(R.drawable.onion32)
- .setTitle(title)
- .setMessage(msg)
- .show();
- }
-
- aDialog.setCanceledOnTouchOutside(true);
+ @SuppressWarnings("SameParameterValue")
+ private void showAlert(String title, String msg, boolean button) {
+ try {
+ if (aDialog != null && aDialog.isShowing())
+ aDialog.dismiss();
+ } catch (Exception e) {
+ //swallow any errors
+ }
+
+ if (button) {
+ aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
+ .setIcon(R.drawable.onion32)
+ .setTitle(title)
+ .setMessage(msg)
+ .setPositiveButton(R.string.btn_okay, null)
+ .show();
+ } else {
+ aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
+ .setIcon(R.drawable.onion32)
+ .setTitle(title)
+ .setMessage(msg)
+ .show();
+ }
+
+ aDialog.setCanceledOnTouchOutside(true);
}
/**
@@ -1066,85 +1015,91 @@ public class OrbotMainActivity extends AppCompatActivity
*/
private synchronized void updateStatus(String torServiceMsg, String newTorStatus) {
- if (!TextUtils.isEmpty(torServiceMsg))
- {
+ if (!TextUtils.isEmpty(torServiceMsg)) {
if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER)) {
lblStatus.setText(torServiceMsg);
}
mTxtOrbotLog.append(torServiceMsg + '\n');
-
}
if (torStatus == null || (newTorStatus != null && newTorStatus.equals(torStatus))) {
torStatus = newTorStatus;
return;
}
- else
- torStatus = newTorStatus;
+ else {
+ torStatus = newTorStatus;
+ }
- if (torStatus == TorServiceConstants.STATUS_ON) {
-
- imgStatus.setImageResource(R.drawable.toron);
+ if (torStatus == null) {
+ return;
+ }
- mBtnStart.setText(R.string.menu_stop);
- mPulsator.stop();
+ switch (torStatus) {
+ case TorServiceConstants.STATUS_ON:
- lblStatus.setText(getString(R.string.status_activated));
+ imgStatus.setImageResource(R.drawable.toron);
- if (autoStartFromIntent)
- {
- autoStartFromIntent = false;
- Intent resultIntent = lastStatusIntent;
+ mBtnStart.setText(R.string.menu_stop);
+ mPulsator.stop();
- if (resultIntent == null)
- resultIntent = new Intent(TorServiceConstants.ACTION_START);
+ lblStatus.setText(getString(R.string.status_activated));
- resultIntent.putExtra(
- TorServiceConstants.EXTRA_STATUS,
- torStatus == null?TorServiceConstants.STATUS_OFF:torStatus
- );
+ if (autoStartFromIntent) {
+ autoStartFromIntent = false;
+ Intent resultIntent = lastStatusIntent;
- setResult(RESULT_OK, resultIntent);
+ if (resultIntent == null)
+ resultIntent = new Intent(TorServiceConstants.ACTION_START);
- finish();
- Log.d(TAG, "autoStartFromIntent finish");
- }
-
-
+ resultIntent.putExtra(
+ TorServiceConstants.EXTRA_STATUS,
+ torStatus == null ? TorServiceConstants.STATUS_OFF : torStatus
+ );
- } else if (torStatus == TorServiceConstants.STATUS_STARTING) {
+ setResult(RESULT_OK, resultIntent);
- imgStatus.setImageResource(R.drawable.torstarting);
+ finish();
+ Log.d(TAG, "autoStartFromIntent finish");
+ }
- if (torServiceMsg != null)
- {
- if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_BOOTSTRAPPED))
- lblStatus.setText(torServiceMsg);
- }
- else
- lblStatus.setText(getString(R.string.status_starting_up));
+ break;
- mBtnStart.setText("...");
+ case TorServiceConstants.STATUS_STARTING:
- } else if (torStatus == TorServiceConstants.STATUS_STOPPING) {
+ imgStatus.setImageResource(R.drawable.torstarting);
- if (torServiceMsg != null && torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
- lblStatus.setText(torServiceMsg);
-
- imgStatus.setImageResource(R.drawable.torstarting);
- lblStatus.setText(torServiceMsg);
+ if (torServiceMsg != null) {
+ if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_BOOTSTRAPPED))
+ lblStatus.setText(torServiceMsg);
+ }
+ else {
+ lblStatus.setText(getString(R.string.status_starting_up));
+ }
- } else if (torStatus == TorServiceConstants.STATUS_OFF) {
+ mBtnStart.setText("...");
- imgStatus.setImageResource(R.drawable.toroff);
- lblStatus.setText("Tor v" + OrbotService.BINARY_TOR_VERSION);
- mBtnStart.setText(R.string.menu_start);
- mPulsator.start();
+ break;
- }
+ case TorServiceConstants.STATUS_STOPPING:
+
+ if (torServiceMsg != null && torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
+ lblStatus.setText(torServiceMsg);
+ imgStatus.setImageResource(R.drawable.torstarting);
+ lblStatus.setText(torServiceMsg);
+
+ break;
+ case TorServiceConstants.STATUS_OFF:
+
+ imgStatus.setImageResource(R.drawable.toroff);
+ lblStatus.setText(String.format("Tor v%s", OrbotService.BINARY_TOR_VERSION));
+ mBtnStart.setText(R.string.menu_start);
+ mPulsator.start();
+
+ break;
+ }
}
/**
@@ -1156,7 +1111,7 @@ public class OrbotMainActivity extends AppCompatActivity
sendIntentToService(TorServiceConstants.ACTION_START);
mTxtOrbotLog.setText("");
}
-
+
/**
* Request tor status without starting it
* {@link TorServiceConstants#ACTION_START} {@link Intent} to
@@ -1168,30 +1123,34 @@ public class OrbotMainActivity extends AppCompatActivity
private boolean isTorServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
- if (OrbotService.class.getName().equals(service.service.getClassName())) {
- return true;
+
+ if (manager != null) {
+ for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
+ if (OrbotService.class.getName().equals(service.service.getClassName())) {
+ return true;
+ }
}
}
+
return false;
}
public boolean onLongClick(View view) {
- if (torStatus == TorServiceConstants.STATUS_OFF) {
+ if (torStatus.equals(TorServiceConstants.STATUS_OFF)) {
lblStatus.setText(getString(R.string.status_starting_up));
startTor();
} else {
- lblStatus.setText(getString(R.string.status_shutting_down));
-
+ lblStatus.setText(getString(R.string.status_shutting_down));
+
stopTor();
}
-
+
return true;
-
+
}
-// this is what takes messages or values from the callback threads or other non-mainUI threads
+ // this is what takes messages or values from the callback threads or other non-mainUI threads
//and passes them back into the main UI thread for display to the user
private Handler mStatusUpdateHandler = new Handler() {
@@ -1204,13 +1163,13 @@ public class OrbotMainActivity extends AppCompatActivity
switch (msg.what) {
case MESSAGE_TRAFFIC_COUNT:
- DataCount datacount = new DataCount(data.getLong("upload"),data.getLong("download"));
-
+ DataCount datacount = new DataCount(data.getLong("upload"), data.getLong("download"));
+
long totalRead = data.getLong("readTotal");
long totalWrite = data.getLong("writeTotal");
-
- downloadText.setText(formatCount(datacount.Download) + " / " + formatTotal(totalRead));
- uploadText.setText(formatCount(datacount.Upload) + " / " + formatTotal(totalWrite));
+
+ downloadText.setText(String.format("%s / %s", formatCount(datacount.Download), formatTotal(totalRead)));
+ uploadText.setText(String.format("%s / %s", formatCount(datacount.Upload), formatTotal(totalWrite)));
break;
case MESSAGE_PORTS:
@@ -1218,20 +1177,19 @@ public class OrbotMainActivity extends AppCompatActivity
int socksPort = data.getInt("socks");
int httpPort = data.getInt("http");
- lblPorts.setText("SOCKS: " + socksPort + " | HTTP: " + httpPort);
+ lblPorts.setText(String.format(Locale.getDefault(), "SOCKS: %d | HTTP: %d", socksPort, httpPort));
break;
default:
String newTorStatus = msg.getData().getString("status");
- String log = (String)msg.obj;
+ String log = (String) msg.obj;
if (torStatus == null && newTorStatus != null) //first time status
{
findViewById(R.id.frameMain).setVisibility(View.VISIBLE);
updateStatus(log, newTorStatus);
- }
- else
+ } else
updateStatus(log, newTorStatus);
super.handleMessage(msg);
break;
@@ -1242,22 +1200,22 @@ public class OrbotMainActivity extends AppCompatActivity
@Override
protected void onDestroy() {
super.onDestroy();
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mLocalBroadcastReceiver);
+ LocalBroadcastManager.getInstance(this).unregisterReceiver(mLocalBroadcastReceiver);
+
+ }
+
+ public static class DataCount {
+ // data uploaded
+ long Upload;
+ // data downloaded
+ long Download;
+ DataCount(long Upload, long Download) {
+ this.Upload = Upload;
+ this.Download = Download;
+ }
}
- public class DataCount {
- // data uploaded
- public long Upload;
- // data downloaded
- public long Download;
-
- DataCount(long Upload, long Download){
- this.Upload = Upload;
- this.Download = Download;
- }
- }
-
private String formatCount(long count) {
NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
// Converts the supplied argument into a string.
@@ -1287,16 +1245,15 @@ public class OrbotMainActivity extends AppCompatActivity
}
private static final float ROTATE_FROM = 0.0f;
- private static final float ROTATE_TO = 360.0f*4f;// 3.141592654f * 32.0f;
+ private static final float ROTATE_TO = 360.0f * 4f;// 3.141592654f * 32.0f;
- private void requestNewTorIdentity ()
- {
- sendIntentToService (TorServiceConstants.CMD_NEWNYM);
+ private void requestNewTorIdentity() {
+ sendIntentToService(TorServiceConstants.CMD_NEWNYM);
- Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO, imgStatus.getWidth()/2f,imgStatus.getWidth()/2f,20f,false);
+ Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO, imgStatus.getWidth() / 2f, imgStatus.getWidth() / 2f, 20f, false);
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
- rotation.setDuration((long) 2*1000);
+ rotation.setDuration((long) 2 * 1000);
rotation.setRepeatCount(0);
imgStatus.startAnimation(rotation);
lblStatus.setText(getString(R.string.newnym));
@@ -1353,9 +1310,7 @@ public class OrbotMainActivity extends AppCompatActivity
addFullDeviceVpnView(llBoxShortcuts);
}
}
- }
- else
- {
+ } else {
TextView tv = new TextView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(12, 3, 3, 3);
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits