예제 #1
0
    @Override
    public void onLaunched(boolean isVpnMode) {
        isLaunched = true;
        ActivityCompat.invalidateOptionsMenu(this);

        ImageView star = (ImageView) findViewById(R.id.star);
        stopBlinkingImage(star);
        enableImage(star);
        stopBlinkingStatus();

        startBlinkingImage((ImageView) findViewById(R.id.freeInternetArrow));
        startBlinkingStatus(_(R.string.status_free_internet_connecting));
        if (isVpnMode) {
            clearNotification();
            if (LaunchService.isVpnRunning()) {
                onFreeInternetChanged(true);
            } else {
                startVpn();
            }
        } else {
            if (ApkUtils.isInstalled(this, "fq.router")) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        ApkUtils.uninstall(MainActivity.this, "fq.router");
                    }
                }).start();
            }
            checkWifiRepeater();
            checkPickAndPlay();
            ConnectFreeInternetService.execute(this);
        }
    }
예제 #2
0
 public void exit() {
     if (LaunchService.isVpnRunning()) {
         Toast.makeText(this, R.string.vpn_exit_hint, 5000).show();
         return;
     }
     ExitService.execute(this);
     showNotification(_(R.string.status_exiting));
     sendBroadcast(new ExitingIntent());
 }
예제 #3
0
 private void checkFreeInternet() {
     if (ShellUtils.isRooted()) {
         CheckFreeInternetService.execute(this);
     } else {
         if (LaunchService.isVpnRunning()) {
             onFreeInternetChanged(true);
         }
     }
 }
예제 #4
0
 private void showNotification(String text) {
     if (!PreferenceManager.getDefaultSharedPreferences(this).getBoolean("NotificationEnabled", true)) {
         clearNotification();
         return;
     }
     if (LaunchService.isVpnRunning()) {
         clearNotification();
         return;
     }
     displayNotification(this, text);
 }
예제 #5
0
 private void startVpn() {
     if (LaunchService.isVpnRunning()) {
         LogUtils.e("vpn is already running, do not start it again");
         return;
     }
     Intent intent = VpnService.prepare(MainActivity.this);
     if (intent == null) {
         onActivityResult(ASK_VPN_PERMISSION, RESULT_OK, null);
     } else {
         startActivityForResult(intent, ASK_VPN_PERMISSION);
     }
 }
예제 #6
0
 public void updateStatus(String status) {
     LogUtils.i(status);
     TextView textView = (TextView) findViewById(R.id.statusTextView);
     if (!textView.getText().toString().startsWith("Error:")) {
         textView.setText(status);
         if (LaunchService.isVpnRunning()) {
             clearNotification();
         } else {
             showNotification(status);
         }
     }
 }
예제 #7
0
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
     setTitle("fqrouter " + LaunchService.getMyVersion(this));
     setupUI();
     LaunchedIntent.register(this);
     UpdateFoundIntent.register(this);
     ExitedIntent.register(this);
     WifiRepeaterChangedIntent.register(this);
     PickAndPlayChangedIntent.register(this);
     FreeInternetChangedIntent.register(this);
     DownloadingIntent.register(this);
     DownloadedIntent.register(this);
     DownloadFailedIntent.register(this);
     HandleFatalErrorIntent.register(this);
     DnsPollutedIntent.register(this);
     HandleAlertIntent.register(this);
     ExitingIntent.register(this);
     blinkStatus(0);
     String apnName = getApnName();
     LogUtils.i("apn name: " + apnName);
     final File ignoredFile = new File("/data/data/fq.router2/etc/apn-alert-ignored");
     if (apnName != null && WAP_APN_LIST.contains(apnName.trim().toLowerCase()) && !ignoredFile.exists()) {
         new AlertDialog.Builder(MainActivity.this)
                 .setIcon(android.R.drawable.ic_dialog_alert)
                 .setTitle(R.string.wap_apn_alert_title)
                 .setMessage(String.format(_(R.string.wap_apn_alert_message), apnName))
                 .setPositiveButton(R.string.wap_apn_alert_change_now, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialogInterface, int i) {
                         Intent intent = new Intent(Settings.ACTION_APN_SETTINGS);
                         startActivity(intent);
                         clearNotification();
                         MainActivity.this.finish();
                     }
                 })
                 .setNegativeButton(R.string.wap_apn_alert_ignore, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialogInterface, int i) {
                         IOUtils.writeToFile(ignoredFile, "OK");
                         launch();
                     }
                 })
                 .show();
     } else {
         launch();
     }
 }
예제 #8
0
 @Override
 public void onFreeInternetChanged(boolean isConnected) {
     ImageView freeInternetArrow = (ImageView) findViewById(R.id.freeInternetArrow);
     stopBlinkingImage(freeInternetArrow);
     stopBlinkingStatus();
     if (isConnected) {
         updateStatus(_(R.string.status_free_internet_connected));
         enableImage(freeInternetArrow);
         checkUpdate();
     } else {
         clearStatus();
         disableImage(freeInternetArrow);
     }
     if (LaunchService.isVpnRunning()) {
         ToggleButton button = (ToggleButton) findViewById(R.id.freeInternetButton);
         button.setChecked(isConnected);
     } else {
         enableFreeInternetButton(isConnected);
     }
 }
예제 #9
0
 private void launch() {
     disableAll();
     startBlinkingImage((ImageView) findViewById(R.id.star));
     startBlinkingStatus(_(R.string.status_launching));
     LaunchService.execute(this);
 }