我已经实现了一个UI,它显示了/data/data/com.example.motionsense/files/scaninfo/的内容,这是txt文件列表所在的位置。选择一个时,它会打开可显示这些文本文件的程序,例如ESNote Editor。但是,当我尝试使用ESNote编辑器打开文件时,它会显示错误"无效路径"并显示一个空白文档。
我之前使用ESNote Editor打开了这些文本文件,但是当我的应用程序用它打开文件时它不起作用。我认为它与文件路径有关,当我单击打开显示的文件时,它没有给出ESNote Editor的正确路径以打开文件。香港专业教育学院试图修复代码,并记录我认为可以解决问题,但它再次在日志中出现错误,我不知道该怎么做。
04-01 21:50:53.101: E/PATHWAY(32762): /data/data/com.example.motionsense/files/scaninfo_01_04_2014_21_37_19
04-01 21:50:53.101: E/LookHere(32762): file:///data/data/com.example.motionsense/files/scaninfo_01_04_2014_21_37_19.txt
有谁知道这是不是问题?我在下面发布了我的代码。我也知道文件位置在数据/数据文件夹中,但是我的手机是root用户,我已经测试过使用ESNote Editor打开文件而不使用我的应用程序,它可以工作。
private void getDir(String dirPath) {
myPath.setText("Location: " + dirPath);
item = new ArrayList<String>();
fileList = new ArrayList<String>();
File f = new File(dirPath);
File[] files = f.listFiles();
if (!dirPath.equals(root)) {
item.add(root);
fileList.add(root);
item.add("../");
fileList.add(f.getParent());
}
for (int i = 0; i < files.length; i++) {
File file = files[i];
if (!file.isHidden() && file.canRead()) {
fileList.add(file.getPath());
if (file.isDirectory()) {
item.add(file.getName() + "/");
} else {
item.add(file.getName());
}
}
}
ArrayAdapter<String> fileList = new ArrayAdapter<String>(this,
R.layout.row, item);
setListAdapter(fileList);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
//String s = myPath.getText().subSequence(11,myPath.getText().length());
Log.e("PATHFOOL", fileList.get(position).replace("//", "/"));
File file = new File(fileList.get(position)+".txt".replace("//", "/"));
Log.e("LookHere", Uri.fromFile(file).toString());
if (file.isDirectory()) {
if (file.canRead()) {
// openning
getDir(fileList.get(position));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.fromFile(file));
intent.setType("text/plain");
startActivity(intent);
} else {
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle(
"[" + file.getName()
+ "] folder can't be read!")
.setPositiveButton("OK", null).show();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.fromFile(file));
intent.setType("text/plain");
startActivity(intent);
}
} else {
new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
.setTitle("[" + file.getName() + "]")
.setPositiveButton("OK", null).show();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.fromFile(file));
intent.setType("text/plain");
startActivity(intent);
}
}