あくまで自分で開発してるときの話です。他人が作ったアプリのは見られません。
SharedPreferencesが見られなくて困った。プログラム上からは取得/更新できるけど、実際にファイルにどう書かれているか知りたかった。
adb shellから、run-asコマンドを使っても
run-as: package has corrupt installation
と出て、表示できない。
Android StuidioでView -> Tool Windows -> Device File Exploreを使っても同じメッセージが表示されて表示できない。
原因を調べてもよく分からない。
インストールし直してみたりしたけどメッセージは変わらない。
しょうがないのでコードで書き出すことに。
MainなActivityに以下の関数を作る
protected fun showFiles(filter: FileFilter? = null, print: Boolean = false, path: File? = null ) {
val targetPath = path ?: File("/data/data/" + packageName)
if (targetPath.isDirectory) {
if (filter == null || filter.accept(targetPath)) {
Log.d("showFiles", "dir: ${targetPath.absolutePath}/");
}
targetPath.listFiles().forEach { file -> showFiles(filter, print, file) }
} else {
if (filter == null || filter.accept(targetPath)) {
Log.d("showFiles", "file: ${targetPath.absolutePath}");
if (print) {
Log.d("showFiles", "content: ${targetPath.readText()}")
}
}
}
}
そして、onCreateで引数なしで呼んでみる
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showFiles();
...
logcatにファイル名が出てくる。
自分が使ってるファイル名が分かったら、こんどはonCreateで引数つけて呼んでみる。
今回は”config”という名前をつけてたのが分かったので、
showFiles(FileFilter {pathname -> pathname.endsWith("config.xml") }, true);
という呼び出しに変更して実行すると、 config.xmlファイルがlogcatに表示される。