2012-05-09 5 views
1

私は、電話のメモリにインストールされるアプリケーション用のアプリケーションの作成に専念しています。アプリケーションパッケージへのパス

アプリケーションパッケージ(Environment.get ...?または他の使用可能なフラグ)のパスを動的に知る方法はありますか?私の懸念は、あなたが目的地パスを提供する必要がありますデータベースを復元する場合です。それは、アプリケーションがどこにあるかによって異なります(SDカードと内部メモリ)。

答えて

1

クラスパスの場所、またはクラス自体(クラスパス+パッケージパス)の場所を取得しようとしていますか?クラスパスの場所を取得するには、次の操作を行うことができます

String location = Boot.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
    location = URLDecoder.decode(location, "UTF-8").replaceAll("\\\\", "/"); 

ブートは任意のクラスに置き換えられます。

+0

私のプログラムが動的にインストールされているディレクトリと静的にコード化されているディレクトリを取得しようとしています。それは理にかなっていますか? –

+0

私はそう信じており、そのコードはアプリケーションのクラスパスを動的に取得します。唯一の静的な部分はBoot.classです。これはどのクラスでも置き換えることができ、getClass()で置き換えることもできます。 My Bootクラスは私のjarアプリケーションのメインクラスであり、必要なライブラリとオプションでjarファイルを実行するように動的にブートを設定できるように、jarファイルを見つける必要があります。あなたのアプリケーションのディレクトリの場所はあなたがやろうとしているものではありませんか? – Vulcan

+0

Vulcan-私が探していたものが見つかりました。アンドロイドのドキュメントでは、プログラムファイルはまだ内部のメモリにdata/data/packageの下にあると言います。したがって、私のデータベースは、通常と同じ場所に移動します。 http://developer.android.com/guide/appendix/install-location.html –

関連する問題