我有一个BroadcastReceiver(Android 4.1),它必须测试是否存在位于外部存储区域的文件。接收器不需要读取或写入文件;只是测试它的存在。从BroadcastReceiver访问外部存储器
我还没有在Android文档中发现任何指示BroadcastReceivers无法访问外部文件的内容,但下面的代码总是返回false。
logcat输出显示getExternalStorageState()返回“挂载”,我可以使用普通应用程序访问文件,而不是在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是否停止访问文件?
你在清单中拥有什么权限? – Flynn81
@ Flynn81我在清单中声明了RECEIVE_BOOT_COMPLETED(用于广播意图)和READ_EXTERNAL_STORAGE权限。 – adelphus