3

切断時に追加のクリーンアップを実行する必要がある VpnService のカスタム実装があります。サービスバインディングを使用してアプリケーションから VpnService を停止している場合はすべて正常に機能しますが、システムダイアログを使用してクライアントが VPN から切断されている場合は、そのクリーンアップを実行する必要があります。

では、どうすれば切断をキャッチし、それにいくつかの処理を追加できますか?

Android で VPN 接続ステータスを取得する- これが解決策になる可能性がありますが、Android 4 以降では機能しません。

ログの観点からは、次の 2 つのエントリしかありません。

03-20 03:27:09.478: INFO/Vpn(504): Switched from org.my.package to [Legacy VPN] 03-20 03:27:09.478: DEBUG/Vpn(504): setting state=IDLE, reason=prepare

4

2 に答える 2

3

これは、onBind() から返される AIDL を介して定義されたカスタム IBinder を使用しているためです。VpnService も onBind() を実装し、VpnService.Callback のインスタンスを返します。

はい、そうです。したがって、次のように解決する別の方法だと思います。

@Override
public IBinder onBind(Intent intent) {
    String action = null;
    if (intent != null) {
        action = intent.getAction();
    }

    if (VpnService.SERVICE_INTERFACE == action) {
        return super.onBind(intent);
    }

    return yourBinder;
}
于 2016-09-20T10:36:10.537 に答える