Skip to content

Commit

Permalink
返回时进入后台
Browse files Browse the repository at this point in the history
  • Loading branch information
vnt-dev committed Jul 8, 2024
1 parent 7ab5a55 commit f57db8a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
14 changes: 12 additions & 2 deletions android/app/src/main/java/top/wherewego/vnt_app/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.Intent;
import android.net.VpnService;
import android.os.Bundle;
import android.util.Log;

import androidx.annotation.NonNull;

Expand All @@ -27,13 +28,17 @@ public class MainActivity extends FlutterActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}


@Override
protected void onDestroy() {
super.onDestroy();
MyVpnService.stopVpn();
}
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
channel = new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);
channel.setMethodCallHandler((call, result) -> {
Log.i("moveTaskToBack","moveTaskToBack");
if (call.method.equals("startVpn")) {
try {
Map<String, Object> arguments = call.arguments();
Expand All @@ -48,6 +53,11 @@ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
} catch (Exception e) {
result.error("VPN_ERROR", "stopVpn", e);
}
result.success(null);
}else if (call.method.equals("moveTaskToBack")) {
// 将应用移至后台而不是退出应用
moveTaskToBack(true);
result.success(null);
} else {
result.notImplemented();
}
Expand Down
10 changes: 9 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,15 @@ class VntApp extends StatelessWidget {
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
home: PopScope(
canPop: false,
onPopInvoked: (didPop) {
if (didPop) {
return;
}
VntAppCall.moveTaskToBack();
},
child: const HomePage()),
);
}
}
Expand Down
7 changes: 7 additions & 0 deletions lib/vnt/vnt_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,9 @@ class VntAppCall {
switch (call.method) {
case 'stopVnt':
await vntManager.removeAll();
break;
case 'startVnt':
break;
default:
throw PlatformException(
code: 'Unimplemented',
Expand All @@ -232,6 +235,10 @@ class VntAppCall {
.invokeMethod('startVpn', rustDeviceConfigToMap(info, mtu));
}

static Future<void> moveTaskToBack() async {
return await VntAppCall.channel.invokeMethod('moveTaskToBack');
}

static Future<void> stopVpn() async {
return await VntAppCall.channel.invokeMethod('stopVpn');
}
Expand Down

0 comments on commit f57db8a

Please sign in to comment.