Как управлять Ни одно приложение не может выполнить это действие (AKA ActivityNotFoundException)

Итак, это мой код

    public void onClick() {
                try {
                     startActivity(Utils.openFile(f.getPath(),myExt));
                }
                catch(ActivityNotFoundException activityNotFoundException) {
                    Toast.makeText(mContext, "Nessuna App trovata", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse("market://search?q="+myExt+"&c=apps"));
                    startActivity(intent);
                }   

Где находится мой Utils.openfile()

public static Intent openFile(String u,String b) {
    File file = new File(u);
    Intent target = new Intent(Intent.ACTION_VIEW);
    target.setDataAndType(Uri.fromFile(file),"application/" + b);
    target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    Intent intent = Intent.createChooser(target, "Apri File");
    return intent;       
}

Теперь, как вы видите, я хотел бы справиться с этим, если не могу найти какое-либо приложение, которое может открыть мой файл (pdf, mobi или epub), я хотел бы начать намерение ссылаться на рынок Android и искать любые приложения.

Но я не знаю почему, мой код никогда не вызывает исключения, а просто показывает диалоговое окно, в котором говорится: «Ни одно приложение не может выполнить это действие». Как я могу управлять и достигать своей цели?


person Tizianoreica    schedule 08.08.2013    source источник


Ответы (1)


Попробуйте избавиться от createChooser(). В конце концов, это все равно не нужно для ACTION_VIEW — если пользователь выбрал значение по умолчанию для этого типа MIME, разрешите ему его использовать. И средство выбора не позволяет вам получить ActivityNotFoundException, потому что выбиратель — это действие, и оно существует всегда.

person CommonsWare    schedule 08.08.2013