0

Androidファイルシステム内で特定の情報(デバイスのバッテリー電流や電圧など)を含むテキストファイルを検索したいと思います。

Astroファイルブラウザを使用しようとしましたが、その検索機能は詳細検索(子ディレクトリ内の検索も)をサポートしていないようです。

また、検索したいディレクトリ(/ sys /ディレクトリ)をADBを使用してPCのハードドライブにコピーしようとしましたが、読み取りアクセスがないためにほとんどのファイルがコピーされないため、残念ながらこれは機能しません。

(PCまたはAndroidアプリを介して)ファイルシステムを閲覧するための実用的なソリューションはありませんか?

4

2 に答える 2

1

各メーカーは、ファイルを異なる場所に配置します (または、少なくとも配置できます)。API を使用してこの情報にアクセスしてみてください。

意図があります、ACTION_BATTERY_CHANGED

そしてBatteryManagerクラス

ファイル システムの閲覧に関しては、Astro は正常に動作しますが、OS がアクセス許可を付与していない場合は、電話をルート化しない限り読み取ることができません。

于 2011-08-24T14:40:43.617 に答える
1

ここで、Eclipse ADT から実行してファイル システムを検索できる単純で愚かな Java メソッドを実装しました。

public static List<File> getFilesOfDirectory(File dir, String fileNamePart) {

    List<File> result;

    if (dir.exists() && dir.isDirectory()
            && !dir.getAbsolutePath().contains("root")
            && dir.getAbsolutePath().split("/").length < 10) {
        Log.i("fileSearch", "search in directory " + dir.getAbsolutePath());
        File[] files = dir.listFiles();

        if (files != null)
            result = new ArrayList<File>(Arrays.asList(files));
        else
            result = new ArrayList<File>();
    }

    else
        result = Collections.emptyList();

    /* Filter for interesting files. */
    List<File> filteredResult = new ArrayList<File>();
    for (File file : result) {
        if (file.getAbsolutePath().toLowerCase()
                .contains(fileNamePart.toLowerCase()))
            filteredResult.add(file);
        // no else.
    }

    /* Search recursively. */
    List<File> furtherResults = new ArrayList<File>();
    for (File file : result) {
        if (file.isDirectory())
            furtherResults.addAll(getFilesOfDirectory(file, fileNamePart));
        // no else.
    }
    // end for.

    filteredResult.addAll(furtherResults);

    return filteredResult;
}

このメソッドは、検索するルート ディレクトリを表すファイル オブジェクト (例: new File("/")) と、検索するファイル名を表す文字列 (例: "voltage") を使用して呼び出すことができます。

于 2011-08-25T09:00:34.377 に答える