Android의 인 텐트를 통해 모든 종류의 파일 선택 new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType(“*/*”); Intent i = Intent.createChooser(intent, “File”); startActivityForResult(i,

모든 종류의 파일을 반환 할 수있는 앱의 인 텐트 선택기를 시작하고 싶습니다.

현재 (파일 첨부를 위해 Android 이메일 소스 코드에서 복사 한) 사용합니다.

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
Intent i = Intent.createChooser(intent, "File");
startActivityForResult(i, CHOOSE_FILE_REQUESTCODE);

하지만 내 Galaxy S2에는 “갤러리”와 “음악 플레이어”만 표시됩니다. 이 장치에 파일 탐색기가 있으며 목록에 표시하고 싶습니다. 또한 카메라 앱이 목록에 표시되어 사용자가 사진을 촬영하여 내 앱을 통해 보낼 수 있도록하고 싶습니다. Astro 파일 관리자를 설치하면 그 의도에도 응답합니다. 내 고객은 Galaxy SII 소유자 일 뿐이며 이미 기본이지만 충분한 파일 관리자가 있다는 점을 감안할 때 Astro 파일 관리자를 설치하도록 강요하고 싶지 않습니다.

내가 이것을 어떻게 얻을 수 있는지에 대한 아이디어가 있습니까? 파일을 선택하기 위해 이러한 메뉴에 기본 파일 관리자가 나타나는 것을 이미 보았지만 어떤 앱에 있는지 기억할 수 없습니다.



답변

카메라 용이 아니라 다른 파일 용 ..

내 장치에 ES File Explorer설치했고 이것은 내 경우에 간단히 작동합니다 ..

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent, PICKFILE_REQUEST_CODE);


답변

삼성 파일 탐색기는 커스텀 액션 ( com.sec.android.app.myfiles.PICK_DATA )뿐만 아니라 카테고리 부분 (Intent. CATEGORY_DEFAULT )과 mime-type도 extra로 전달해야합니다.

Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
intent.putExtra("CONTENT_TYPE", "*/*");
intent.addCategory(Intent.CATEGORY_DEFAULT);

이 작업을 사용하여 여러 파일을 열 수도 있습니다. com.sec.android.app.myfiles.PICK_DATA_MULTIPLE 어쨌든 여기 삼성 및 기타 장치에서 작동하는 내 솔루션이 있습니다.

public void openFile(String mimeType) {

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType(mimeType);
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        // special intent for Samsung file manager
        Intent sIntent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
         // if you want any file type, you can skip next line 
        sIntent.putExtra("CONTENT_TYPE", mimeType);
        sIntent.addCategory(Intent.CATEGORY_DEFAULT);

        Intent chooserIntent;
        if (getPackageManager().resolveActivity(sIntent, 0) != null){
            // it is device with Samsung file manager
            chooserIntent = Intent.createChooser(sIntent, "Open file");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { intent});
        } else {
            chooserIntent = Intent.createChooser(intent, "Open file");
        }

        try {
            startActivityForResult(chooserIntent, CHOOSE_FILE_REQUESTCODE);
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(getApplicationContext(), "No suitable File Manager was found.", Toast.LENGTH_SHORT).show();
        }
    }

이 솔루션은 저에게 잘 작동하며 다른 사람에게 유용 할 수 있습니다.


답변

갤럭시 노트에서 나를 위해이 작업은 쇼 연락처, 장치에 설치된 파일 관리자, 갤러리, 음악 플레이어

private void openFile(Int  CODE) {
    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
    i.setType("*/*");
    startActivityForResult(intent, CODE);
}

여기 onActivityResult활동의 경로를 얻으십시오 .

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     String Fpath = data.getDataString();
    // do somthing...
    super.onActivityResult(requestCode, resultCode, data);

}


답변

이것은 나에게 최상의 결과를 제공합니다.

    Intent intent;
    if (android.os.Build.MANUFACTURER.equalsIgnoreCase("samsung")) {
        intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
        intent.putExtra("CONTENT_TYPE", "*/*");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
    } else {

        String[] mimeTypes =
                {"application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // .doc & .docx
                        "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", // .ppt & .pptx
                        "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", // .xls & .xlsx
                        "text/plain",
                        "application/pdf",
                        "application/zip", "application/vnd.android.package-archive"};

        intent = new Intent(Intent.ACTION_GET_CONTENT); // or ACTION_OPEN_DOCUMENT
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
    }


답변

삼성 파일 탐색기가 사용자 지정 작업을 사용하는 것으로 밝혀졌습니다. 이것이 삼성 앱에서 파일을 찾을 때 삼성 파일 탐색기를 볼 수 있지만 내 파일이 아닌 이유입니다.

작업은 “com.sec.android.app.myfiles.PICK_DATA”입니다.

두 인 텐트를 필터링하는 활동을 표시하는 사용자 지정 활동 선택기를 만들었습니다.


답변

이것을 알고 싶다면 파일 선택기를 제공하는 작고 사용하기 쉬운 aFileDialog 라는 오픈 소스 라이브러리 가 있습니다.

Android 용 다른 파일 선택기 라이브러리와의 차이점은 aFileDialog가 파일 선택기를 대화 상자 및 활동으로 여는 옵션을 제공한다는 것입니다.

또한 폴더를 선택하고, 파일을 만들고, 정규식을 사용하여 파일을 필터링하고, 확인 대화 상자를 표시 할 수 있습니다.


답변

다른 답변은 정확하지 않습니다. 그러나 이제 파일을 여는 데 더 많은 옵션이 있습니다. 예를 들어 앱이 파일에 대한 장기적이고 영구적 인 액세스 권한을 갖도록하려면 ACTION_OPEN_DOCUMENT대신 사용할 수 있습니다 . 공식 문서 : 스토리지 액세스 프레임 워크를 사용하여 파일 열기를 참조하십시오 . 또한 이 답변을 참조하십시오 .