Как выбрать изображения и PDF-файлы с помощью одного намерения в проводнике Samsung? - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу выбирать изображения и файлы PDF из проводника только с помощью одного намерения. В настоящее время я использую этот фрагмент кода. Этот код работает нормально для всех устройств, кроме Samsung File Explorer. У меня Samsung J7, благодаря которому я могу выбрать любой тип файла.

public void getFile() {
    String[] mimeTypes = {"image/*", "application/pdf"};
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            intent.setType(mimeTypes.length == 1 ? mimeTypes[0] : "*/*");
            if (mimeTypes.length > 0) {
                intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); }
        } else {
            String mimeTypesStr = ""; for (String mime : mimeTypes) {
                mimeTypesStr += mime + "|"; }
                intent.setType(mimeTypesStr.substring(0,mimeTypesStr.length() - 1));
        }

        // 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", mimeTypes);
        sIntent.addCategory(Intent.CATEGORY_DEFAULT);

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

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