2012-01-05 3 views
0

次のコードは、apkファイルのリストを列挙する必要がありますが、なんらかの理由でそうではありません。私は、インストールするために選択できるリストから1つの.apkファイルを選択できるように、.apkファイルのリストをプログラムで取得しようとしています。出来ますか?sdカードから.apkファイルのユーザリストをプログラム的に表示するにはどうすればいいですか?

public class InstallAPKActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ExtFilter apkFilter = new ExtFilter("apk"); 
    File file[] = Environment.getExternalStorageDirectory().listFiles(apkFilter); 
    Log.d("InstallApk", "Filter applied. Size: "+ file.length); 

    for (int i=0; i < file.length; i++) 
    { 
     Log.d("InstallApk", "FileName:" + file[i].getName()); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(file[i]), 
"application/vnd.android.package-archive"); 
     startActivity(intent); 
    } 





} 

class ExtFilter implements FilenameFilter { 
    String ext; 
    public ExtFilter(String ext) { 
     this.ext = "." + ext; 
    } 
    public boolean accept(File dir, String name) { 
     return name.endsWith(ext); 
    } 
} 
} 
+0

私はこのコードを使用しても問題ありません。 – Manikandan

+0

@Manikandan:ねえ、私のようなエラーを出す:ERROR原因:java.lang.ClassNotFoundException:com.a.android.GetapkActivity in loader dalvik.system.PathClassLoader [/data/app/com.a.android-1。 apk] –

答えて

0

apkファイルのリストを表示するためにコードを試しました。私は

次のコードは、さて、あなたは再帰的に検索を行う必要があります

import java.io.File; 
import java.io.FilenameFilter; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 

public class MyListView extends Activity { 




    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ExtFilter apkFilter = new ExtFilter("apk"); 
     File file[] = Environment.getExternalStorageDirectory().listFiles(apkFilter); 

     Log.i("InstallApk","Filter applied. Size: "+ file.length); 

     for (int i=0; i < file.length; i++) 
     { 
      Log.i("InstallApk", "FileName:" + file[i].getName()); 

     } 



    } 



    class ExtFilter implements FilenameFilter { 
     String ext; 
     public ExtFilter(String ext) { 
      this.ext = "." + ext; 
     } 
     public boolean accept(File dir, String name) { 
      return name.endsWith(ext); 
     } 
    } 
    } 
+0

これは、親ディレクトリのファイルのみをリストします。つまり、/ mnt/sdcard/downloads /または/ mnt/sdcard/otherDirectories/ – Jakar

1

あなたのSDカードに存在するのapkファイルのリストを示してAPKファイルのリストを取得することができています。あなたがやっているのは、ファイルを親ディレクトリにのみ一覧表示することです。

This Pageは、ファイルツリーをどのように歩くかを説明しています。

Google検索を行うこともできますが、私はオラクルの公式ページがより有用であると感じています。

This Pageがより有用であることが分かった。このページでは、PathMatcherについて、Androidではご利用いただけません。それはPathMatcherクラスを使用しています

唯一の場所は次のとおりです。

void find(Path file) { 
      Path name = file.getFileName(); 
      if (name != null && matcher.matches(name)) { 
       numMatches++; 
       System.out.println(file); 
      } 
     } 

その場合にしてくださいあなたはfile.getName().endsWith(".apk")matcher.mathces(name)を置き換えることができ、その後、あなたはしかし、コードを変更します。

+0

内のファイルだけではなく、/ mnt/sdcard /にあるファイルのみがリストされます。残念ながら、これにはjava.nio。(*)のインポートが必要です。 Androidの一部ではないようです。 – Tam

関連する問題