fixes for onboot logic and handling

This commit is contained in:
Nathan Freitas 2015-04-02 23:11:04 -04:00
parent 8c5b38eeea
commit 150488dd9c
3 changed files with 43 additions and 31 deletions

View File

@ -17,6 +17,7 @@
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:name="org.torproject.android.OrbotApp" android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
@ -89,7 +90,8 @@
<activity android:name="org.torproject.android.ui.wizard.PromoAppsActivity" android:exported="false"/>
org.torproject.android.ui.wizard.ChooseLocaleWizardActivityui.ChooseLocaleWizardActivity" android:exported="false"/>
<activity android:name="org.torproject.android.ui.wizard.ChooseLocaleWizardActivity" android:exported="false"/>
<activity android:name=".settings.SettingsPreferences" android:label="@string/app_name"/>
<activity android:name=".settings.AppManager" android:label="@string/app_name"/>
@ -105,11 +107,21 @@
</intent-filter>
</service>
<receiver android:name="org.torproject.android.service.OnBootReceiver">
<receiver android:name="org.torproject.android.service.OnBootReceiver"
android:enabled="true" android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>

View File

@ -20,12 +20,13 @@ public class OnBootReceiver extends BroadcastReceiver {
if (startOnBoot)
{
if (useVPN)
startVpnService(context);
startService(TorServiceConstants.CMD_INIT,context);
startService(TorServiceConstants.CMD_START,context);
if (useVPN)
startVpnService(context);
}
}

View File

@ -28,8 +28,11 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.net.VpnService;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.util.Log;
import android.widget.Toast;
@ -37,6 +40,7 @@ import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
import com.runjva.sourceforge.jsocks.server.ServerAuthenticatorNone;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class OrbotVpnService extends VpnService implements Handler.Callback {
private static final String TAG = "OrbotVpnService";
@ -217,37 +221,32 @@ public class OrbotVpnService extends VpnService implements Handler.Callback {
}
@Override
public void onRevoke() {
new Thread ()
try
{
public void run()
Log.d(TAG,"closing interface, destroying VPN interface");
//Tun2Socks.Stop();
if (mInterface != null)
{
try
{
Log.d(TAG,"closing interface, destroying VPN interface");
//Tun2Socks.Stop();
if (mInterface != null)
{
mInterface.close();
mInterface = null;
}
}
catch (Exception e)
{
Log.d(TAG,"error stopping tun2socks",e);
}
catch (Error e)
{
Log.d(TAG,"error stopping tun2socks",e);
}
mInterface.close();
mInterface = null;
}
}.start();
}
catch (Exception e)
{
Log.d(TAG,"error stopping tun2socks",e);
}
catch (Error e)
{
Log.d(TAG,"error stopping tun2socks",e);
}
super.onRevoke();
}