VPNプロファイルの設定が保存できません。

792 views
Skip to first unread message

ht_nr

unread,
May 20, 2011, 2:29:21 AM5/20/11
to Android-SDK-Japan
今回は初めて投稿させていただきますht_nrと申します。
このグループの情報はいつも参考にさせていただいています。

現在Android2.3のOSソースコードをダウンロードして
ルート\packages\apps\Settings の中の「VPN Settings」機能を
移植して通常アプリとして動かそうとしています。

エミュレーター上で、インストールから起動、VPNの設定入力画面まではなんとか
動かせたのですが、VPNの設定を入力して前画面に戻った瞬間に
ダイアログでエラーが出てしまいます。

このエラーの対処方法が知りたいのですが、ご存知の方いらっしゃいますでしょうか。

java.io.FileNotFoundException: /data/misc/vpn/profiles/
4599898380687054558.pobj (Permission denied): /data/misc/vpn/profiles/
4599898380687054558.pobj (Permission denied)

という感じです。
(上記は例です。実際のエラーは数値が異なります)

LogCatには何も出力されませんでした。

コンソール接続して該当のディレクトリの権限を見てみましたが

# ls -l
ls -l
drwxrwx--- system system 2011-05-16 08:54 profiles

となっていました。

systemユーザー権限は一般のアプリでは取得できないという情報があったため
VPNプロファイル保存ディレクトリを変更したら解決できるのではないかと考えていますが、
変更方法がわからず、デバッグでステップ実行しても該当の処理の箇所がわからない状況です。

ご存じの方がいらっしゃいましたら、どうぞアドバイスを
よろしくお願いいたします。

環境:
OS Windows7 エミュレーター
IDE Eclipse
ターゲット 2.3(level9)

ht_nr

unread,
May 27, 2011, 2:31:38 AM5/27/11
to Android-SDK-Japan
自己解決しました。

android/net/vpn/VpnManager.java に プロファイルの保存パスが書かれていました。

public static final String PROFILES_PATH = "/misc/vpn/profiles";

これを

public static final String PROFILES_PATH = "/data/(アプリ名)/vpn/
profiles";

にしたところうまく保存できました。

デバッグしても該当箇所がわからなかったのは、自作の「Settings」アプリを起動していたのに、
いつのまにかOS側のSettingsのVPN処理が呼ばれてすげ変わっていたからのようです。
(自作アプリ側でブレークポイント張っても呼ばれなかったため、VPN関連クラスの名前を変えてみたら
引っかかるようになりました)
Reply all
Reply to author
Forward
0 new messages