내 앱에서 애플리케이션 DB를 SD 카드에 보관하고 싶습니다. 내 코드에서 디렉토리 canWrite()
가 있는지 확인 하고 그렇지 않은 경우 IOException
. 이 특정 인스턴스에서 db 파일을 SD 카드의 루트 디렉토리에 복사하려고 시도했지만 IOException
. 쓰기가 가능하도록 폴더 / 파일에 대한 권한을 어떻게 변경합니까?
답변
SD 카드 디렉토리가 /sdcard
맞지만 하드 코딩해서는 안됩니다. 대신를 호출 Environment.getExternalStorageDirectory()
하여 디렉토리를 가져 오십시오.
File sdDir = Environment.getExternalStorageDirectory();
아직 그렇게하지 않았다면 매니페스트에 아래 줄을 추가하여 SD 카드에 쓸 수있는 올바른 권한을 앱에 부여해야합니다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
답변
Dave의 답변에서 위의 제안 된 기술은 확실히 좋은 디자인 관행이며, 그렇습니다. 궁극적으로 필요한 권한은 외부 저장소에 액세스하기 위해 AndroidManifest.xml 파일에 설정되어야합니다.
그러나 대부분의 (모두는 아니지만 확실하지는 않지만) “매니페스트 옵션”을 추가하는 Mono-esque 방법은 활동 (또는 서비스)을 구현하는 클래스의 속성을 사용하는 것입니다.
Visual Studio Mono 플러그인은 매니페스트를 자동으로 생성하므로 수동으로 조작하지 않는 것이 가장 좋습니다 (다른 옵션이없는 경우가있을 수 있음).
예를 들면 :
[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")]
public class MonoActivity : Activity
{
protected override void OnCreate(Bundle bindle)
{
base.OnCreate(bindle);
}
}