Ошибка в контексте FLAG_ACTIVITY_NEW_TASK

В моем приложении у меня есть расширенный список, и я хочу открыть PDF-файл, загруженный из Интернета, когда я нажимаю на конкретный ребенок. Когда я нажимаю на нее, приложение вылетает, и эта ошибка появляется в Android Monitor на Android Studio:

Для вызова функции startActivity () из контекста Activity требуется флаг FLAG_ACTIVITY_NEW_TASK. Это действительно то, что вы хотите?

Когда я пытаюсь addflag () или setflag (), он сообщает мне что-то о статическом контексте.

Класс ContextGetter:

public class ContextGetter extends Application { private static Context context; public void onCreate(){ super.onCreate(); context = getApplicationContext(); } public static Context getAppContext() { return context; } } 

Класс загрузчика:

 public class Downloader { public static void DownloadFile(String fileURL, File directory) { try { FileOutputStream f = new FileOutputStream(directory); URL u = new URL(fileURL); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); InputStream in = c.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = in.read(buffer)) > 0) { f.write(buffer, 0, len1); } f.close(); } catch (Exception e) { e.printStackTrace(); } } } 

Класс OpenPDF (AbrirPDF на моем языке):

 public class AbrirPDF { public static void showPdf() { File file = new File(Environment.getExternalStorageDirectory()+File.separator+"lightflow/Read.pdf"); PackageManager packageManager = ContextGetter.getAppContext().getPackageManager(); Intent testIntent = new Intent(Intent.ACTION_VIEW); testIntent.setType("application/pdf"); List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.fromFile(file); intent.setDataAndType(uri, "application/pdf"); ContextGetter.getAppContext().startActivity(intent); } } 

Часть Java-кода активности:

 private void registerClick() { expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { if ((groupPosition == 0) && (childPosition == 0)) { File file = new File(Environment.getExternalStorageDirectory()+File.separator+"IAVE", "Read.pdf"); try { file.createNewFile(); } catch (IOException e1) { e1.printStackTrace(); } Downloader.DownloadFile("MY_URL", file); AbrirPDF.showPdf(); } else { } return false; } }); } 

Поскольку вы используете контекст приложения, вы должны установить этот флаг по своему намерению

 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Если вы не хотите использовать этот флаг и продолжать использовать текущую задачу, вам нужно будет добавить параметр Activity к вашему showPdf() и использовать его для запуска следующего действия.

 public static void showPdf(Activity activity) { ... activity.startActivity(intent); } 

Затем вы можете вызвать его из обработчика onChildClick используя:

 AbrirPDF.showPdf(MyActivityClassName.this); 
Intereting Posts
Файлы Autogenerated XAML.g.cs не компилируются в проекте Xamarin Forms PCL Получение и фильтрация данных GPS GPS, как улучшить информацию о местоположении Создание Hashmap из строки JSON Intra-Capture Intage не может вернуться в Galaxy Tab Limited Edition Как вернуться к стилю по умолчанию в EditText, если применить фон? Android: как подождать AsyncTask для завершения в MainThread? На потребляемую мощность в Android Почему мой размер приложения и текущая версия «меняются с помощью устройства», хотя я загрузил только один APK? Как получить видео пальцем ногти из необработанного видео папки на Android Android: Как заполнить цвет только для определенной части изображения? EditText не принимает цифры в качестве входных данных Таблица обновления Android sqlite всегда возвращает 0 Как остановить сеанс в Google mobile analytics v2 для Android без использования EasyTracker Можно ли использовать режим настройки и сохранить режим выбора на экране? Метод Gradle DSL не найден: storeFile ()