2011-12-13 11 views
0

更新 Android 2.1をターゲットにする必要があります。SDカード/内蔵アプリのフィルタリスト

私は、SDカードや内蔵ストレージにフィルタをかけて、プログラムをプログラム的にリストする方法を見つけようとしています。

私はこれにアプローチする方法もわかりません。最初にSDカードのマウントポイントを検出して、アプリケーションデータディレクトリがあるかどうかを確認する必要がありますか?例えば、

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { 
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);  
    List<ResolveInfo> intents = m_pm.queryIntentActivities(mainIntent, 0); 
    File baseSD = Environment.getExternalStorageDirectory(); 

    int count = intents.size(); 
    for (int i = 0; i < count; i++) { 
    String baseApp = intents.get(i).activityInfo.applicationInfo.dataDir; 
    if (baseApp.startsWith(baseSD.getAbsolutePath()) { 
     // This is on the SD card, do whatever with the app details 
    } 
    else { 
     // This is on internal storage 
    } 
    } 
} 

非常に低い眉に見えますが、より適切な方法が必要です。どんな助けもありがとうございます。

答えて

2

あなたは、アプリがインストールされている場所を確認するために、このコードを使用することができます。FLAG_EXTERNAL_STORAGEは、AndroidのAPIから8

+0

を入手可能な出発されているので

PackageInfo pi = pm.getPackageInfo("packageName", 0); if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == 0) ; // stored on internal storage else ; // stored on sd 

は注意してください迅速な返信いただきありがとうございます、それは実際に答えるん私の最初の質問、しかし私は2.1をターゲットにする必要があります。これまで私が見つけたすべての例は、一致するディレクトリを使用しています。私は私の質問を更新します。 – Kirk

+0

これを考えた後、私のアプリのこの部分は、2.2を使用していない限り理にかなっていないので、これはうまく動作します。 – Kirk

+1

私にとっては同じです、私はアンドロイド2.2から始めることができる私のアプリの一部を持っています。アンドロイドバージョンの85%が2.2以上であるため、とにかく応援します。 http://developer.android.com/resources/dashboard/platform-versions.html – gwa

関連する問題