Android 从广播接收器访问外部存储器
我有一个BroadcastReceiver(Android 4.1),它必须测试外部存储区域中是否存在文件。接收器不需要读取或写入文件;只是测试它的存在 我在Android文档中没有发现任何表明BroadcastReceivers无法访问外部文件的内容,但是下面的代码总是返回false logcat输出显示getExternalStorageState()返回“mounted”,我可以使用普通的应用程序访问该文件,而不是在接收器中。没有抛出异常Android 从广播接收器访问外部存储器,android,broadcastreceiver,Android,Broadcastreceiver,我有一个BroadcastReceiver(Android 4.1),它必须测试外部存储区域中是否存在文件。接收器不需要读取或写入文件;只是测试它的存在 我在Android文档中没有发现任何表明BroadcastReceivers无法访问外部文件的内容,但是下面的代码总是返回false logcat输出显示getExternalStorageState()返回“mounted”,我可以使用普通的应用程序访问该文件,而不是在接收器中。没有抛出异常 public class FileCheckRec
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;
}
}
BroadcastReceiver是否停止访问文件?一个好方法是从BroadcastReceiver启动一个新服务,以处理您希望执行的任务 其他事项:
我最终发现,系统应用程序(我的应用程序就是)无法访问存储在外部存储器上的文件
将我的BroadcastReceiver移动到另一个(非系统)APK解决了此问题。您的清单中有哪些权限?@Flynn81我已完成接收启动(出于广播目的)并在清单中声明读取外部存储权限。您有此权限的来源吗?我觉得这一点都不对。我很好奇你当时使用的是什么版本的AOSP,以及你犯了什么错误。