updated root perm cacheing issue and help wizard dialogs
svn:r22729
This commit is contained in:
		
							parent
							
								
									6289f7ac7b
								
							
						
					
					
						commit
						2a2bfb4abf
					
				|  | @ -4,8 +4,6 @@ | ||||||
|       android:versionName="0.2.2.14-orbot-alpha-0.0.9" android:versionCode="8"> |       android:versionName="0.2.2.14-orbot-alpha-0.0.9" android:versionCode="8"> | ||||||
|         |         | ||||||
|        <uses-permission android:name="android.permission.INTERNET" /> |        <uses-permission android:name="android.permission.INTERNET" /> | ||||||
|         <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> |  | ||||||
|   |  | ||||||
|   |   | ||||||
|     <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> |     <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="false"> | ||||||
|        |        | ||||||
|  |  | ||||||
|  | @ -10,5 +10,5 @@ | ||||||
| # Indicates whether an apk should be generated for each density. | # Indicates whether an apk should be generated for each density. | ||||||
| split.density=false | split.density=false | ||||||
| # Project target. | # Project target. | ||||||
| target=Google Inc.:Google APIs:3 | target=android-3 | ||||||
| apk-configurations= | apk-configurations= | ||||||
|  |  | ||||||
|  | @ -15,12 +15,13 @@ | ||||||
| 		    android:layout_height="fill_parent" | 		    android:layout_height="fill_parent" | ||||||
| 		    android:padding="3px"> | 		    android:padding="3px"> | ||||||
| 		     | 		     | ||||||
| <TextView android:text="@string/wizard_tips_msg" 	android:textColor="#ffffff" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> | <TextView android:text="@string/wizard_tips_msg" android:layout_gravity="left"	android:textColor="#ffffff" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> | ||||||
| 
 | 
 | ||||||
| <Button android:text="@string/wizard_tips_otrchat" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOtrchat" android:layout_width="wrap_content" android:layout_height="wrap_content"/> | <Button android:text="@string/wizard_tips_otrchat"  android:layout_gravity="left" android:drawableLeft="@drawable/icon_otrchat"  android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOtrchat" android:layout_width="wrap_content" android:layout_height="wrap_content"/> | ||||||
| 
 | 
 | ||||||
| <Button android:text="@string/wizard_tips_orweb" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOrweb" android:layout_width="wrap_content" android:layout_height="wrap_content"/> | <Button android:text="@string/wizard_tips_orweb"  android:drawableLeft="@drawable/icon_orweb" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOrweb" android:layout_width="wrap_content" android:layout_height="wrap_content"/> | ||||||
| 
 | 
 | ||||||
|  | <Button android:text="@string/wizard_tips_proxy" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOrweb" android:layout_width="wrap_content" android:layout_height="wrap_content"/> | ||||||
| 
 | 
 | ||||||
| 			</LinearLayout> | 			</LinearLayout> | ||||||
| 		</ScrollView>			 | 		</ScrollView>			 | ||||||
|  |  | ||||||
|  | @ -77,15 +77,15 @@ and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Map | ||||||
|     <string name="wizard_welcome_msg">Orbot brings Tor to Android. Tor is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security known as traffic analysis.\n\n*WARNING:* Simply installing Orbot will _not_ magically anonymize your mobile traffic! This wizard will help you get started.</string> |     <string name="wizard_welcome_msg">Orbot brings Tor to Android. Tor is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security known as traffic analysis.\n\n*WARNING:* Simply installing Orbot will _not_ magically anonymize your mobile traffic! This wizard will help you get started.</string> | ||||||
|     <string name="wizard_details">Some Orbot Details</string> |     <string name="wizard_details">Some Orbot Details</string> | ||||||
|     <string name="wizard_details_msg">Orbot is an open-source application that contains Tor, LibEvent and Privoxy. It provides a local HTTP proxy (8118) and a SOCKS proxy (9050) into the Tor network. Orbot also has the ability, on rooted device, to send all internet traffic through Tor.</string> |     <string name="wizard_details_msg">Orbot is an open-source application that contains Tor, LibEvent and Privoxy. It provides a local HTTP proxy (8118) and a SOCKS proxy (9050) into the Tor network. Orbot also has the ability, on rooted device, to send all internet traffic through Tor.</string> | ||||||
|     <string name="wizard_permissions_root">Grant Permissions</string> |     <string name="wizard_permissions_root">Permission Granted</string> | ||||||
|     <string name="wizard_permissions_stock">Permissions Warning</string> |     <string name="wizard_permissions_stock">Orbot Permissions</string> | ||||||
|     <string name="wizard_premissions_msg_root">Excellent! We\'ve detected that you have root permissions enabled for Orbot. We will use this power wisely.</string> |     <string name="wizard_premissions_msg_root">Excellent! We\'ve detected that you have root permissions enabled for Orbot. We will use this power wisely.</string> | ||||||
|     <string name="wizard_permissions_msg_stock">We\'ve detected that you do not have root permissions enabled. Your application data usage will NOT be transparently routed through Tor without root access. </string> |     <string name="wizard_permissions_msg_stock"> While it is not required, Orbot can become a more powerful tool if your device has root access. Use the button below to grant Orbot superpowers! </string> | ||||||
|     |     | ||||||
|     <string name="wizard_permissions_no_root">If you choose to continue WITHOUT root, you must use apps that know how to talk to Tor.</string> |     <string name="wizard_permissions_no_root">If you don\'t have root access or have no idea what we\'re talking about, just be sure to use apps made to work with Orbot.</string> | ||||||
|     <string name="wizard_permissions_consent">I understand and would like to continue without root</string> |     <string name="wizard_permissions_consent">I understand and would like to continue without root</string> | ||||||
|     |     | ||||||
|     <string name="wizard_permission_enable_root">Attempt to enable root access</string> |     <string name="wizard_permission_enable_root">Grant Root for Orbot</string> | ||||||
|     <string name="wizard_configure">Configure Torification</string> |     <string name="wizard_configure">Configure Torification</string> | ||||||
|     <string name="wizard_configure_msg">Orbot gives you the option to route all application traffic through Tor OR to choose your applications individually.</string>  |     <string name="wizard_configure_msg">Orbot gives you the option to route all application traffic through Tor OR to choose your applications individually.</string>  | ||||||
|     <string name="wizard_configure_all">Proxy All Apps Through Tor</string> |     <string name="wizard_configure_all">Proxy All Apps Through Tor</string> | ||||||
|  | @ -94,9 +94,9 @@ and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Map | ||||||
|      |      | ||||||
|     <string name="wizard_tips_tricks">Orbot-enabled Apps</string> |     <string name="wizard_tips_tricks">Orbot-enabled Apps</string> | ||||||
|     <string name="wizard_tips_msg">We encourage you to download & use apps that know how to connect directly to Orbot. Click on the buttons below to install.</string> |     <string name="wizard_tips_msg">We encourage you to download & use apps that know how to connect directly to Orbot. Click on the buttons below to install.</string> | ||||||
|     <string name="wizard_tips_otrchat">OtrChat - From the Orbot dev team, a secure Instant Messaging client for Android.</string> |     <string name="wizard_tips_otrchat">OTRCHAT - Secure instant messaging client for Android</string> | ||||||
|     <string name="wizard_tips_orweb">OrWeb (Android 1.x Only) - From the Orbot dev team, a web browser designed to work with Tor.</string> |     <string name="wizard_tips_orweb">ORWEB (Android 1.x Only) - Browser designed for privacy & for Orbot</string> | ||||||
|     |     <string name="wizard_tips_proxy">Proxy Help - Learn how to configure apps to work with Orbot</string> | ||||||
|     <string name="wizard_final">Orbot is ready!</string> |     <string name="wizard_final">Orbot is ready!</string> | ||||||
|     <string name="wizard_final_msg">Hundreds of thousands of people around the world use Tor for a wide variety of reasons: journalists and bloggers, human rights workers, law enforcement officers, soldiers, corporations, citizens of repressive regimes, and just ordinary citizens... and now you are ready to, as well!</string> |     <string name="wizard_final_msg">Hundreds of thousands of people around the world use Tor for a wide variety of reasons: journalists and bloggers, human rights workers, law enforcement officers, soldiers, corporations, citizens of repressive regimes, and just ordinary citizens... and now you are ready to, as well!</string> | ||||||
|      |      | ||||||
|  | @ -105,5 +105,6 @@ and all DNS requests. This includes the built-in Browser, Gmail, YouTube and Map | ||||||
|      |      | ||||||
|  <!-- END Welcome Wizard strings (DJH) --> |  <!-- END Welcome Wizard strings (DJH) --> | ||||||
| 
 | 
 | ||||||
|  | 	<string name="connect_first_time"> You\'ve successfully connected to the Tor network - but this does NOT mean your device is secure. You can use the \'Check\' option from the menu to test your browser. \n\nVisit us at https://guardianproject.info/apps/orbot or send an email to help@guardianproject.info to learn more.</string> | ||||||
| 
 | 
 | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
|  | @ -27,6 +27,17 @@ android:enabled="true"/> | ||||||
| 
 | 
 | ||||||
| </PreferenceCategory> | </PreferenceCategory> | ||||||
| 
 | 
 | ||||||
|  | <!--  | ||||||
|  | <PreferenceCategory android:title="Web Proxy"> | ||||||
|  | <Preference | ||||||
|  | android:defaultValue=""  | ||||||
|  | android:key="pref_web_proxy" | ||||||
|  | android:title="Open Proxy Panel" | ||||||
|  | android:summary="Set HTTP Settings (Android 2.x Experimental)" | ||||||
|  | android:enabled="true"/> | ||||||
|  | </PreferenceCategory> | ||||||
|  |  --> | ||||||
|  |   | ||||||
| <PreferenceCategory android:title="Bridges"> | <PreferenceCategory android:title="Bridges"> | ||||||
| 
 | 
 | ||||||
| <CheckBoxPreference android:defaultValue="false"  | <CheckBoxPreference android:defaultValue="false"  | ||||||
|  |  | ||||||
|  | @ -186,6 +186,8 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 			 | 			 | ||||||
| 			unbindService(); | 			unbindService(); | ||||||
| 			 | 			 | ||||||
|  |             stopService(new Intent(ITorService.class.getName())); | ||||||
|  | 			 | ||||||
| 			 | 			 | ||||||
| 		} catch (RemoteException e) { | 		} catch (RemoteException e) { | ||||||
| 			Log.w(TAG, e); | 			Log.w(TAG, e); | ||||||
|  | @ -330,7 +332,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
|     	lblStatus = (TextView)findViewById(R.id.lblStatus); |     	lblStatus = (TextView)findViewById(R.id.lblStatus); | ||||||
|     	imgStatus = (ImageView)findViewById(R.id.imgStatus); |     	imgStatus = (ImageView)findViewById(R.id.imgStatus); | ||||||
|     	 |     	 | ||||||
|     	updateStatus(""); |     	//updateStatus(""); | ||||||
|     } |     } | ||||||
| 	 | 	 | ||||||
| 	/* | 	/* | ||||||
|  | @ -343,36 +345,6 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	private static class ListEntry { |  | ||||||
| 		private CheckBox box; |  | ||||||
| 		private TextView text; |  | ||||||
| 	} |  | ||||||
| 	/* |  | ||||||
| 	 * Show the about view - a popup dialog |  | ||||||
| 	 */ |  | ||||||
| 	private void showAbout () |  | ||||||
| 	{ |  | ||||||
| 		 |  | ||||||
| 		LayoutInflater li = LayoutInflater.from(this); |  | ||||||
|         View view = li.inflate(R.layout.layout_about, null);  |  | ||||||
|         TextView versionName = (TextView)view.findViewById(R.id.versionName); |  | ||||||
|         versionName.setText(R.string.app_version);     |  | ||||||
|          |  | ||||||
| 		new AlertDialog.Builder(this) |  | ||||||
|         .setTitle(getString(R.string.button_about)) |  | ||||||
|         .setView(view) |  | ||||||
|         .setNeutralButton(getString(R.string.button_help), new DialogInterface.OnClickListener() { |  | ||||||
|                 public void onClick(DialogInterface dialog, int whichButton) { |  | ||||||
|                       showHelp(); |  | ||||||
|                 } |  | ||||||
|         }) |  | ||||||
|         .setNegativeButton(getString(R.string.button_close), new DialogInterface.OnClickListener() { |  | ||||||
|                 public void onClick(DialogInterface dialog, int whichButton) { |  | ||||||
|                     //    Log.d(TAG, "Close pressed"); |  | ||||||
|                 } |  | ||||||
|         }) |  | ||||||
|         .show(); |  | ||||||
| 	} |  | ||||||
| 	 | 	 | ||||||
| 	/* | 	/* | ||||||
| 	 * Show the help view - a popup dialog | 	 * Show the help view - a popup dialog | ||||||
|  | @ -649,6 +621,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 	{ | 	{ | ||||||
| 		  | 		  | ||||||
| 		 new AlertDialog.Builder(this) | 		 new AlertDialog.Builder(this) | ||||||
|  | 		 .setIcon(R.drawable.icon) | ||||||
|          .setTitle(title) |          .setTitle(title) | ||||||
|          .setMessage(msg) |          .setMessage(msg) | ||||||
|          .setPositiveButton(android.R.string.ok, null) |          .setPositiveButton(android.R.string.ok, null) | ||||||
|  | @ -683,7 +656,22 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 		    		lblStatus.setText(getString(R.string.status_activated)); | 		    		lblStatus.setText(getString(R.string.status_activated)); | ||||||
| 		    		 | 		    		 | ||||||
| 		    		 | 		    		 | ||||||
|  | 		    		SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mOrbot); | ||||||
| 
 | 
 | ||||||
|  | 		    		boolean showWizard = prefs.getBoolean("connect_first_time",true); | ||||||
|  | 		    		 | ||||||
|  | 		    		if (showWizard) | ||||||
|  | 		    		{ | ||||||
|  | 		    		 | ||||||
|  | 		    			Editor pEdit = prefs.edit(); | ||||||
|  | 		    			 | ||||||
|  | 		    			pEdit.putBoolean("connect_first_time",false); | ||||||
|  | 		    			 | ||||||
|  | 		    			pEdit.commit(); | ||||||
|  | 		    			 | ||||||
|  | 		    			showAlert(getString(R.string.status_activated),getString(R.string.connect_first_time)); | ||||||
|  | 		    			 | ||||||
|  | 		    		} | ||||||
| 	    		 | 	    		 | ||||||
| 	    			/* | 	    			/* | ||||||
| 		    		if (progressDialog != null) | 		    		if (progressDialog != null) | ||||||
|  | @ -792,7 +780,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 		Message msg = mHandler.obtainMessage(ENABLE_TOR_MSG); | 		Message msg = mHandler.obtainMessage(ENABLE_TOR_MSG); | ||||||
|     	mHandler.sendMessage(msg); |     	mHandler.sendMessage(msg); | ||||||
|     	 |     	 | ||||||
|     	updateStatus(""); |     //	updateStatus(""); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     private void stopTor () throws RemoteException |     private void stopTor () throws RemoteException | ||||||
|  | @ -802,7 +790,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
| 		Message msg = mHandler.obtainMessage(DISABLE_TOR_MSG); | 		Message msg = mHandler.obtainMessage(DISABLE_TOR_MSG); | ||||||
|     	mHandler.sendMessage(msg); |     	mHandler.sendMessage(msg); | ||||||
|     	 |     	 | ||||||
|     	updateStatus(""); |     	//updateStatus(""); | ||||||
|     	 |     	 | ||||||
|     } |     } | ||||||
|      |      | ||||||
|  | @ -979,6 +967,9 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
|             if (mService != null) { |             if (mService != null) { | ||||||
|                 try { |                 try { | ||||||
|                     mService.unregisterCallback(mCallback); |                     mService.unregisterCallback(mCallback); | ||||||
|  |                      | ||||||
|  |                  | ||||||
|  |                      | ||||||
|                 } catch (RemoteException e) { |                 } catch (RemoteException e) { | ||||||
|                     // There is nothing special we need to do if the service |                     // There is nothing special we need to do if the service | ||||||
|                     // has crashed. |                     // has crashed. | ||||||
|  | @ -988,6 +979,7 @@ public class Orbot extends Activity implements OnClickListener, TorConstants | ||||||
|             // Detach our existing connection. |             // Detach our existing connection. | ||||||
|             unbindService(mConnection); |             unbindService(mConnection); | ||||||
|             mIsBound = false; |             mIsBound = false; | ||||||
|  |              | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 	 | 	 | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ import android.widget.Toast; | ||||||
| public class WizardHelper implements TorConstants { | public class WizardHelper implements TorConstants { | ||||||
| 
 | 
 | ||||||
| 	private Context context; | 	private Context context; | ||||||
| 	private Dialog currentDialog; | 	private AlertDialog currentDialog; | ||||||
| 	 | 	 | ||||||
| 	public WizardHelper (Context context) | 	public WizardHelper (Context context) | ||||||
| 	{ | 	{ | ||||||
|  | @ -70,15 +70,8 @@ public class WizardHelper implements TorConstants { | ||||||
| 	public void showWizardStep2() | 	public void showWizardStep2() | ||||||
| 	{ | 	{ | ||||||
| 		 | 		 | ||||||
| 		String title = null; |  | ||||||
| 		String msg = null; |  | ||||||
| 	 | 	 | ||||||
| 		 | 		String title = context.getString(R.string.wizard_permissions_stock); | ||||||
| 			title = context.getString(R.string.wizard_permissions_root); |  | ||||||
| 			msg = context.getString(R.string.wizard_premissions_msg_root); |  | ||||||
| 		 |  | ||||||
| 			 |  | ||||||
| 			title = context.getString(R.string.wizard_permissions_stock); |  | ||||||
| 		 | 		 | ||||||
| 		LayoutInflater li = LayoutInflater.from(context); | 		LayoutInflater li = LayoutInflater.from(context); | ||||||
|         View view = li.inflate(R.layout.layout_wizard_stock, null);  |         View view = li.inflate(R.layout.layout_wizard_stock, null);  | ||||||
|  | @ -101,10 +94,28 @@ public class WizardHelper implements TorConstants { | ||||||
| 				else | 				else | ||||||
| 				{ | 				{ | ||||||
| 					Toast.makeText(context, "Unable to get root access", Toast.LENGTH_LONG).show(); | 					Toast.makeText(context, "Unable to get root access", Toast.LENGTH_LONG).show(); | ||||||
|  | 					view.setEnabled(false); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		}); | 		}); | ||||||
|          |          | ||||||
|  |         CheckBox cb1 = (CheckBox)view.findViewById(R.id.CheckBoxConsent); | ||||||
|  |           | ||||||
|  |         cb1.setOnCheckedChangeListener(new OnCheckedChangeListener (){ | ||||||
|  | 
 | ||||||
|  | 			@Override | ||||||
|  | 			public void onCheckedChanged(CompoundButton buttonView, | ||||||
|  | 					boolean isChecked) { | ||||||
|  | 			 | ||||||
|  | 				currentDialog.getButton(AlertDialog.BUTTON_NEUTRAL).setEnabled(isChecked); | ||||||
|  | 				 | ||||||
|  | 				 | ||||||
|  | 				 | ||||||
|  | 			} | ||||||
|  |         	 | ||||||
|  |         }); | ||||||
|  |          | ||||||
|  |   | ||||||
| 		showCustomDialog(title, view,context.getString(R.string.btn_next),context.getString(R.string.btn_back),new DialogInterface.OnClickListener() { | 		showCustomDialog(title, view,context.getString(R.string.btn_next),context.getString(R.string.btn_back),new DialogInterface.OnClickListener() { | ||||||
| 			 | 			 | ||||||
| 			@Override | 			@Override | ||||||
|  | @ -123,6 +134,8 @@ public class WizardHelper implements TorConstants { | ||||||
| 			} | 			} | ||||||
| 		}); | 		}); | ||||||
| 		 | 		 | ||||||
|  | 		currentDialog.getButton(AlertDialog.BUTTON_NEUTRAL).setEnabled(false); | ||||||
|  | 		 | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | @ -315,7 +328,7 @@ public class WizardHelper implements TorConstants { | ||||||
| 		 | 		 | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private void showDialog (String title, String msg, String button1, String button2, DialogInterface.OnClickListener ocListener) | 	public void showDialog (String title, String msg, String button1, String button2, DialogInterface.OnClickListener ocListener) | ||||||
| 	{ | 	{ | ||||||
| 	  | 	  | ||||||
| //		dialog.setContentView(R.layout.custom_dialog); | //		dialog.setContentView(R.layout.custom_dialog); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue