このチュートリアルによると、VPNサービスを切断する唯一の方法は、「システム管理ダイアログ」を使用することです。これは、通知バーを下にドラッグしてそこから選択することで手動で実行できますが、これは私の問題の良い解決策ではありません。
「切断」ボタンが押されたときにアプリ内からこのダイアログを表示できるようにする必要がありますが、これを行う方法に関するドキュメントが見つかりません。
誰か助けてもらえますか?
現在、接続を切断するための唯一の公開され推奨されている方法は、残念ながら通知による方法のみです。残念ながら、ダイアログを切断したり、ダイアログを表示したりするための機能は非表示になっています。
もちろん、だからと言ってアクセスできないわけではありませんが、そうするとかなりの苦痛を伴います。この特定のケースではこれを試したことはありませんが、過去に音楽プレーヤーでこれを行って、何が再生されているかを調べました(オーディオのスクロブリング用)。したがって、これを行う方法を絶対に見つけなければならない場合は、どんなにハックであっても、これを試すことができますが、これはドラゴンであることを覚えておいてください。その API は、プライベートで内部的なものであると想定されているため、Android の任意の 2 つのビルド (プラットフォーム バージョンだけでなく) の間で気まぐれに変更される可能性があります。ここでは、コードを障害に対して非常に回復力のあるものにする必要があります。率直に言って、それはハッキーで PITA にすぎません。
そうは言っても、これの171行目を見てください
それがあなたのやりたいことです。必要なものが見えないことを除けば、そうですか?したがって、このサービスにはこの AIDLが必要です(そして、おそらく少しの反省も必要です。忘れてしまいましたが、これは長い間行っていません)。
このブログ投稿では、詳細ではありませんが、同様のことについて説明しています。それは信じられないほど落胆させる慣行であるため、話題になっているものを見つけるのは困難です。
tun descript を閉じて Service を終了させるだけでいいと思います。これにより、VPN が効果的に終了します (ただし、問題のアプリは、VPN を再度開く権限を引き続き保持します)。通知(キーシンボル)も消えます。別のアプリの VPNService を試している場合は、より厳しい可能性があります。おそらく、そのアプリの作成者に API を依頼する必要があります。