>source

에서 길을 찾으려고 노력했다

Intent intent = new Intent();             
            intent.setType("application/pdf");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 2);

그러나 나는 Marshamallow 에서 길을 얻지 못했다 , 롤리팝에서 길을 찾을 수 있습니다.

내부 저장소에서 파일 경로를 얻는 방법은 무엇입니까?


  • 답변 # 1

    파일 제공자를 사용해야한다고 생각합니다. 이것을 참조하십시오. https://developer.android.com/reference/android/support/v4/content/FileProvider

  • 답변 # 2

    startActivityForResult 를 사용하여 활동을 시작할 때 , 호출 활동은 onActivityResult 에서 결과 (있는 경우)를 얻습니다. . 호출 활동에서 해당 메소드를 대체해야합니다 ...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    }
    
    
    이 메소드는 startActivityForResult 에 의해 시작된 활동에서 결과가 리턴 되 자마자 호출됩니다. . 당신은 requestCode 를 사용할 수 있습니다  매개 변수를 사용하여 예상 한 결과와 일치 (또는 필터링)합니다. 귀하의 경우 requestCode 를 확인해야합니다   startActivityForResult 에서 제공 한 값인 2와 같습니다. .

    와이즈 비즈  2와 같으면 PDF 파일을 처리해야합니다. 인 텐트 매개 변수 "could"는 해당 PDF 파일의 경로를 가질 수 있습니다.

    requestCode
    
    

    이제 파일을 탐색하고 선택하려면 다음과 같은 방법으로 파일을 실행하십시오 (Android Kitkat 이상 ... 나는 생각합니다) ...

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if(requestCode == 2 && data != null){
            //This is the uri to the file (which could be null)
            Uri uri = data.getData();
            if(uri != null){
                Log.i("LOG_TAG", String.format("uri path = %s", uri));
            }
        }
    }
    
    

    그런 다음 위에서 언급 한대로 선택한 PDF URI를받습니다

    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("application/pdf"); startActivityForResult(intent, SELECT_FILE_REQUEST_CODE);

  • 이전 MaterialApp Flutter를 사용하지 않고 화면에 버튼 추가
  • 다음 reactjs - 파일 객체로 state를 설정하는 방법