私のアプリは、VPN 経由でリモート ホスト上でアクションを実行します。すべてがうまく機能します: 新しい電話で VPN を手動で作成し、それが機能することを確認し、アプリをロードして実行し、リモート アクションを実行して、1 日を続けます。私のアプリはリモートで起こっていることも通知するので、これが機能するには接続をアクティブにしておく必要があります。今のところ、アプリはリモート ホストに到達できないことを検出し、接続が失われたことを通知する通知を送信するので、Android の VPN ステータス画面で再接続ボタンをクリックできます。
私が望むのは、代わりにそのボタンをプログラムで「押す」ことです。
コードで新しい VPN 接続を追加したり、コードで開始したりするつもりはありません。切断時に VPN を再接続するだけです。現在の実装のように完全にあきらめる前に数回試行するだけであったとしても、Android が自動再接続をサポートしないのはなぜですか。
アプリが配布されることはありません。社内のサポート スタッフ向けです。ターゲット デバイスで動作する限り、下位互換性やデバイス固有の問題は心配ありません: Galaxy S III
現時点では、アプリはintent
、ユーザーが SETTINGS インテントを使用して VPN 画面にすばやくアクセスできるように、接続へのショートカットを提供します。
public void openVPN(View view) {
startActivity(new Intent("android.net.vpn.SETTINGS"));
}
これは手動で再接続する場合には機能しますが、それでも再接続を行うのは煩わしく、完了までに数回タップする必要があります。私はどこでも検索しましたが、電話をルート化したり、Androidクライアントの代わりにサードパーティのVPNクライアントパッケージを使用したりせずに、これに対するエレガントなソリューションを持っている人はいないようです.
ストック API を使用して運が悪いのでしょうか、それとも後方互換性と前方互換性を失うことを意味するとしても、必要なものを備えた秘密の忍者 API がありますか?
これは、スタック オーバーフローに対する私の最初の質問です。