• 로그인 함 해보끄나?

  • Sarangnamu.net June 17, 2003
    Home Login Profile Study Open Project Q&A Google Code
    android:requestLegacyExternalStorage="true"
    Last Modify : 08 October, 2019(03:25)
    android 10 beta 3 를 확인 한 뒤 정식 발표 이후 Scoped Storage 가 어떻게 변경되었나 확인해보았는데 예외 처리 하는 attribute 값이 변경되어 있다.
     
    android:requestLegacyExternalStorage="true"
     
    AndroidManifest.xml 파일의 application element 내에 해당 값을 넣어주면 android 10 타깃이더라도 예전 형태로 사용할 수 있다.
    추가적으로 requestLegacyExternalStorage=”true” 사용 없이 처리를 해볼까 싶어서 관련 내용을 찾아보고 진행 해보았는데
     
    How to save an image in Android Q using MediaStore?
    - https://stackoverflow.com/questions/56904485/how-to-save-an-image-in-android-q-using-mediastore
     
    webview 에서 pictures 내에 이미지를 불러들이 방법이 있나?
    그리고 pictures 에 저장된 이미지에 exif 를 수정할 수 있나?
    라는 문제가 다가 왔는데 =_ = 일단 답 없음을 파악하고
     
    webview 에서 Pictures 에 이미지를 불러들이는 방법은 일단 포기 했고 (방법이 있으려나?)
    ExifInterface 클래스의 경우 androidx 개발 진에게 ExifInterface 관련 리포트를 남기곤 =_ = 대기중 이다.
    답 나오기 전까진 android:requestLegacyExternalStorage=”true” 를 유지 하는걸로 일단 결정 완료.
     

     
    음 =_ = 다시 뒤적 거려야 될듯 
    https://github.com/android/storage-samples/tree/228c8e0aa19586bfcf36318ddb191719537a45a4
     
     
    1. 먼저 ACTION_OPEN_DOCUMENT_TREE  를 호출하는데 해서 퍼미션으로는 FLAG_GRANT_WRITE_URI_PERMISSION, FLAG_GRANT_PERSISTABLE_URI_PERMISSION
    를 준 뒤 Pictures 폴더의 퍼미션을 허락한 뒤 파일을 선택 하여 절대 경로를 웹뷰로 전달했을때 이미지 테그에서 인식 못함 
     
     
     
    2. ACTION_OPEN_DOCUMENT 또는 그 외의 방식으로 이미지를 열어 파일을 External Storage 에 저장 후 절대 경로를 웹뷰로 전달하면 이미지 테그에서 인식 함 
     
     
     
    3. ACTION_OPEN_DOCUMENT 또는 그 외의 방식으로 이미지를 열어 파일을 Public Storage (Pictures) 에 이미지 경로를 웹뷰에 전달하면 이미지 테그에서 인식 못함 
     
    현재까지 상황 =_ =
     
    내가 모르는 먼가 다른게 있는건가??? 
    아니면 External Storage 로 파일을 복사해야지만 이용할 수 있는 것인가?
     
     
    ps. github 에서 android q scoped storage 를 검색 시 좀 논란이네 =_ = java 단은 그나마 접근 가능한 부분이 있지만 커널 단에서 접근하는 애들은 사용 불가라는 =_ = 허헐 
    apple 은 보안을 점점 풀어놓고 google 은 보안을 점점 조이는데 줬다가 뺏으니 확실히 =_ = 빡치는 듯 ㅎ
    https://issuetracker.google.com/issues/128591846
     
     
    게시글을 쭈욱 읽고는 아 내가 =_ = android:requestLegacyExternalStorage="false" 일때의 상황을 너무 일찍 고민했나? 싶은 생각이들 정도로 
    =_ = 저항이 거세다. 
     
     
    webview 에서 Public storage 의 이미지의 접근에 방법이 딱히 Internal Storage 로 복사하는 방법 밖에 떠오르지 않아서 일단 stackoverflow 에 문의 =_ = 중 
    답변아 달려랏~~~ +_+ (안 달려 ㅋㅋ)
     
     
    4. video file 의 경우 인터넷을 참조해서 일단 아래와 같이 코드를 작성해보았는데 썸네일을 읽어오지는 못한다. =_ = 
    bmp = null 로 들어오는 중, 아.. 어찌하오리까?
     
    ParcelFileDescriptor pfd = null;
    try {
        pfd = mContext.getContentResolver().openFileDescriptor(contentUri, "r");
        Bitmap bmp = retivedVideoFrameFromVideo(pfd.getFileDescriptor());
        glideRequest = GlideApp.with(mContext).load(bmp);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (pfd == null) {
            try {
                pfd.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
     
    private Bitmap retivedVideoFrameFromVideo(FileDescriptor fd) {
        MediaMetadataRetriever retriver = new MediaMetadataRetriever();
        retriver.setDataSource(fd); // context, uri 를 줘보기도 했지만 안됨 =_= 
        Bitmap rtn = null;
     
        try {
            rtn = retriver.getFrameAtTime();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (retriver != null) {
                retriver.release();
            }
        }
     
        return rtn;
    }
     
    android q scoped storage 용 sample 은 대체 어디에 있는가? 
     
    5. 레퍼런스 삼을만한 코드가 없다보니 고민좀 하다가 ex explorer 관련 소개 광고 짤을 봤는데 
    오홍 +_+ scoped storage 완벽 대응이라고 되어 있길래 에뮬레이터에 설치하고는 보는데
    일반 이미지 로딩/생성 같은건 되는데 동영상 파일의 경우 썸네일이 나오지 않는걸 확인 하곤 
    api 28 에서도 동일하게 안보이나 체크를 했는데 api 28 에서는 보인다.
     
    돌아돌아 결정 내린건 api 29 에서 동영상 썸네일은 아직은 방법 없는 듯한? 고로 파일명과 동영상을 알리는 클립 아이콘으로 대체하기로 결정
     
     
     

    Comment


    입력하3 1582010361



    Locations of visitors to this page