показать JUST ONCE и ВСЕГДА, используя Intent.createChooser - PullRequest
0 голосов
/ 02 января 2019

Я открываю диалог выбора, используя метод Intent.createChooser().Но в этом диалоговом окне я не вижу опции «ТОЛЬКО ОДИН РАЗ» и «ВСЕГДА».Я хочу этот тип диалогового окна выбора с Intent.createChooser() методом

enter image description here

вот мой код.

File mFile = new File("give your file path here");
                    String type = "video/mp4";
                    Intent viewDoc = new Intent(Intent.ACTION_VIEW);
                    viewDoc.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    viewDoc.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                    Uri contentUri = FileProvider.getUriForFile(this, "com.xyz.fileprovider", mFile);
                    viewDoc.setDataAndType(contentUri, type);

                    PackageManager pm = getPackageManager();
                    apps = pm.queryIntentActivities(viewDoc, PackageManager.MATCH_DEFAULT_ONLY);

                    ArrayList<Intent> targetIntents = new ArrayList<Intent>();
                    for (ResolveInfo resolveInfo : apps) {
                        String packageName = resolveInfo.activityInfo.packageName;
                        grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
                        if (!BuildConfig.APPLICATION_ID.equals(packageName)) {
                            Intent targetIntent = new Intent(Intent.ACTION_VIEW); //                            targetIntent.setDataAndType(contentUri, type);
                            targetIntent.setPackage(packageName);
                            targetIntent.setDataAndType(contentUri, type);
                            targetIntents.add(targetIntent);
                        }
                    }


                    if (type == null || type.equals("") || targetIntents.size() <= 0) { //application/octet-stream

                        android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(this).create();
                        alertDialog.setTitle(getResources().getString(R.string.app_name));
                        alertDialog.setMessage(getResources().getString(R.string.offline_file_not_supported_error));
                        alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                        alertDialog.show();
                    } else {
                        Intent chooserIntent = Intent.createChooser(targetIntents.remove(0), "Open file with");
                        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetIntents.toArray(new Parcelable[]{}));
                        startActivity(chooserIntent);
                        //startActivity(viewDoc);
                    }

Но после этогокод Я получаю диалоговое окно выбора, как показано ниже enter image description here

Но в этом диалоговом окне мне нужна ПРОСТО РАЗ и ВСЕГДА.

Я использовал приведенный ниже код, потому что хочу удалитьмое собственное приложение от chooser.

for (ResolveInfo resolveInfo : apps) {
                        String packageName = resolveInfo.activityInfo.packageName;
                        grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
                        if (!BuildConfig.APPLICATION_ID.equals(packageName)) {
                            Intent targetIntent = new Intent(Intent.ACTION_VIEW); //                            targetIntent.setDataAndType(contentUri, type);
                            targetIntent.setPackage(packageName);
                            targetIntent.setDataAndType(contentUri, type);
                            targetIntents.add(targetIntent);
                        }
                    }
...