2017-12-21 15 views
1

android studio를 사용하고 있습니다. 갤러리에있는 사진을 처리하려고했습니다.Android Photo Gallery가 OnActivityResult의 데이터에서 올바른 Uri를 반환하지 않습니다.

내가 data.getData()으로부터 보호 void onActivityResult(int requestCode, int resultCode, Intent data)

Uri 반환에

startActivityForResult(photoPickerIntent, REQUEST_IMAGE_Load);를 호출하는 것은 올바르지 않습니다. 같은

내용 : //com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F128/ORIGINAL/NONE/1980269994

이미지 이름이 없습니다.

어떻게 해결할 수 있습니까? 감사.

+0

합니다. – ADM

답변

0

당신은

requirdUri = Uri.fromFile(theSrcPath); 

장치를 사용하는 경우 당신이에서이 코드를 사용해야 Nauget 위에 카메라 및 갤러리

당신이 방법은 아래 사용자에게 제공 업체를 만들어야에서 URI를 얻을. 이에 대한 당신은

고해상도 내부에 하나 개의 폴더를 생성해야합니다 -> XML을 -> 및 File_path_public.xml 명명 된 하나 개의 파일을 추가합니다. 참고 : 하나의 제공자처럼을 당신은 모든 파일의 이름

를 선택하고 해당 파일에 넣어 코드 내부

<?xml version="1.0" encoding="UTF-8"?> 

-<paths xmlns:android="http://schemas.android.com/apk/res/android"> 

<external-path path="." name="external_files"/> 

</paths> 

그리고 응용 프로그램 태그 내부 매니페스트 파일에서

만들기 :

<!-- this is For Access External file Storage --> 
<provider 
    android:name="android.support.v4.content.FileProvider" 
    android:authorities="com.example.appName.provider" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
     android:name="android.support.FILE_PROVIDER_PATHS" 
     android:resource="@xml/file_paths_public" /> 
</provider> 

그런 다음이 기능을 만듭니다. 아래 :

public static Uri getUriFromFile(Context theCtx, File theSrcPath) { 
     Uri requirdUri = null; 

     // Above Compile SDKversion: 25 -- Uri.fromFile Not working 
     // So we have to use Provider 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      requirdUri = FileProvider.getUriForFile(theCtx, 
        theCtx.getApplicationContext().getPackageName() + CommonUtils.PROVIDER_FILE_EXTENSION, 
        theSrcPath); 
     } else { 
      requirdUri = Uri.fromFile(theSrcPath); 
     } 

     return requirdUri; 
    } 

매니페스트에 외부 저장소에 대한 권한이 있어야합니다.

+0

도움을 주셔서 감사합니다. 파일 이름을 가져 오는 방법을 찾았지만 경로를 알지 못합니다. 따라서 fromFile()에 전달되는 값에 대해서는 전혀 알지 못합니다. – psbookmark

+0

@psbookmark 이것을 알아 냈습니까? 나는 같은 문제가있다. 일부 서버에 업로드하고 싶은 파일에 대해 올바른 Uri를 가져올 수 없습니다. – Vakas

0

당신은 당신이 다음 파일을 생성 메센 예에서 이름을 얻어야한다 이미지 이름을하려면 다음 질문에`Intent` 추가

File f = new File(uri.getPath()); 
String imageName = f.getName();