IOS 오브젝티브씨 와같이 파일을 가져오려고 한다.
developer.android.com/guide/topics/providers/document-provider?hl=ko
저장소 액세스 프레임워크를 사용하여 파일 열기 | Android 개발자 | Android Developers
Android 4.4(API 수준 19)에는 저장소 액세스 프레임워크(SAF)가 도입되었습니다. SAF는 사용자가 선호하는 문서 저장소 제공자 전체에서 문서, 이미지 및 각종 다른 파일을 탐색하고 여는 작업을 간편
developer.android.com
시뮬레이터와 실제 안드로이드폰에서의 모습입니다.
ACTION_OPEN_DOCUMENT을 통해 열어줍니다.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/csv");
startActivityForResult(intent, READ_REQUEST_CODE);
onActivityResult 통해서 파일경로를 가져옵니다
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if (data != null) {
Uri uri = data.getData();
Log.e("uri", uri.toString());
}
}
}
처음에 뒤에 10261같은 숫자로 나와서 이게 실제 경로가아니라서 파일을 못가져오는것이 아닐까 싶었는데
저상태로 파일을 읽고 가져올수 있습니다.
파일이름을 가져옵니다.
public String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
if (result == null) {
result = uri.getLastPathSegment();
}
return result;
}
반응형
'Android' 카테고리의 다른 글
안드로이드 - Java CSV파일(.csv) 읽기 (0) | 2021.01.03 |
---|