[英]How to show user list of .apk files programmatically from sd card?
以下代碼應枚舉apk文件列表,但由於某些原因,它不會。 我正在嘗試以編程方式獲取.apk文件列表,以便可以從該列表中選擇一個.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);
}
}
}
好吧,您必須遞歸進行搜索。 您正在執行的操作僅列出父目錄中的文件。
本頁說明如何遍歷文件樹。
您也可以進行Google搜索,但我發現Oracle的官方頁面更加有用。
我發現此頁面更有用。 本頁討論了Android上不可用的PathMatcher
。
它使用PathMatcher
類的唯一位置是:
void find(Path file) {
Path name = file.getFileName();
if (name != null && matcher.matches(name)) {
numMatches++;
System.out.println(file);
}
}
在這種情況下,您可以將matcher.mathces(name)
替換為file.getName().endsWith(".apk")
,然后根據需要修改代碼。
我嘗試了您的代碼以查看apk文件列表。 我可以獲取apk文件列表
以下代碼顯示了SDCard中存在的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);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.