Уже много раз отвечали на SO:
- FLAG_ACTIVITY_NEW_TASK Ошибка флага для совместного использования в пользовательском блесне
Этот ответ не является работать больше над уровнем API 23 и выше. предыдущие ответы устарели.
Я также ссылался на официальную https://developer.android.com/training/sharing/send
Что такое сцена:
У меня есть аудиофайл, чтобы поделиться с способными приложениями, которые поддерживают ACTION_SEND
. Я пытаюсь это сделать из intentService
То, что я пытаюсь с тех пор, как более часа:
Uri uri = Uri.parse(PATH);
Intent share = new Intent(Intent.ACTION_SEND, uri);
share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
share.putExtra(Intent.EXTRA_STREAM, uri);
this.getApplicationContext().startActivity(share);
Исключение: вызов startActivity () извне контекста действия требуется флаг FLAG_ACTIVITY_NEW_TASK.
После многократного изменения кода он начал работать с Gmail, но затем я получил: Исключение: android .os.FileUriExposedException: file: /// storage /emulated/0/test.mp3 раскрывается вне приложения через Intent.getData ()
Затем я получил разрешение на чтение, например:
PackageManager packageManager = context.getPackageManager();
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("audio/*");
shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(PATH)));
if ( shareIntent.resolveActivity(packageManager) != null )
{
startActivity(shareIntent);
}
else
{
Log.d("SEND :", "shareAction: NO APP \n");
}
Исключение: вызов startActivity ( ) извне контекста действия требуется флаг FLAG_ACTIVITY_NEW_TASK.
Что меня беспокоит:
- Является ли android недостаточно умным, что является не находит
FLAG_ACTIVITY_NEW_TASK
? - Разве android хочет, чтобы я сначала открыл активность своих приложений, а затем я должен
startactivity
только из активности? - Уже после того, как все улажено, уведомитель класс предоставил уведомление, в котором tentservice для обработки кнопок SHARE или CANCEL в уведомлении в качестве параметров. Теперь я должен снова создать новое действие, которое снова получит эти преднамеренные дополнения, поступающие из нескольких классов и на большие расстояния, если android захочет обременять разработчика только продолжением перемещения данных для несколько раз за одно задание?
- Что на самом деле нужно?
Заранее спасибо.