我有一個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