Я хочу сделать это полностью на заднем плане.
ACTION_SEND
и ACTION_SEND_MULTIPLE
- действия действия.У вас нет выбора, кроме как заниматься деятельностью, которая их обрабатывает.Вы можете использовать это действие, используя Theme.Translucent.NoTitleBar
, чтобы быть «невидимым» действием, но оно все еще там и все еще выходит на передний план.Обычно такое действие делает что-то короткое в onCreate()
, например, запускает фоновую работу и показывает Toast
, затем использует finish()
, чтобы уйти.
Я пытался начатьслужба думает, что разрешение Uri может быть «сохранено», но я думаю, что это не
Добавьте FLAG_GRANT_READ_URI_PERMISSION
на Intent
, который вы используете для запуска службы, и поместите Uri
в«data» аспект Intent
:
new Intent(this, YourServiceClass.class)
.setData(yourUri)
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
Затем получите Uri
в службе, позвонив getData()
на Intent
.Флаг передаст разрешение на чтение операции службе, которая затем сможет использовать ContentResolver
и openInputStream()
для чтения содержимого.