我有一个 BroadcastReceiver (Android 4.1),它必须测试是否存在位于外部存储区域的文件。接收方不需要读取或写入文件;只是测试它的存在。
我在 Android 文档中没有发现任何表明 BroadcastReceivers 无法访问外部文件的内容,但下面的代码始终返回 false。
logcat 输出显示 getExternalStorageState() 返回“mounted”,我可以使用普通 App 访问该文件,只是不能在 Receiver 中访问。不抛出异常。
public class FileCheckReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean b = checkFile();
Log.d(TAG, "FileCheckReceiver: " + b);
}
boolean checkFile() {
String state = Environment.getExternalStorageState();
Log.d(TAG, "FileCheckReceiver, Environment.getExternalStorageState: " + state);
String name = "file.txt";
File f = new File(Environment.getExternalStorageDirectory() + "/" + name);
try
{
if (f.exists()) {
System.out.println(f.getCanonicalPath().toString());
return true;
}
}catch(Exception e) {
e.printStackTrace();
}
return false;
}
}
BroadcastReceivers 是否停止访问文件?