외부 저장소 영역에있는 파일의 존재 여부를 테스트해야하는 BroadcastReceiver (Android 4.1)가 있습니다. 수신자는 파일을 읽거나 쓸 필요가 없습니다. 그것의 존재를 시험하기 만하면됩니다.BroadcastReceiver에서 외부 저장소에 액세스
Android 설명서에서 BroadcastReceivers가 외부 파일에 액세스 할 수 없다는 것을 발견하지 못했지만 아래 코드는 항상 false를 반환합니다.
logcat 출력은 getExternalStorageState()가 "mounted"를 반환하고 일반 응용 프로그램을 사용하여 파일에 액세스 할 수 있음을 보여줍니다. 예외는 발생하지 않습니다.
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