2016-06-01 4 views
0

Я хотел бы обновить свой проект SDK 23, но у меня есть различные службы, работающие в фоновом режиме, чтобы получать данные, хранить их, отправить и т.д. ...Android SDK 23+ Права доступа служб

Так что, если я обновлю в проекте я также должен изменить запрос разрешения. Теперь мне интересно, где лучше всего это сделать.

Как раз в настоящий момент полученные данные должны быть сохранены? Но это было бы довольно абстрактно для пользователя, особенно если файл конфигурации или что-то нужно перенести, и пользователь ничего не получает от этого.

Перед запуском службы просто запросите все разрешения, требуемые службой? Это делает концепцию абсурдной, потому что она будет такой же, как до сих пор ...

Так что спасибо за ваш вклад!

+0

«Перед запуском службы просто запросите все разрешения, требуемые службой?» Вероятно, это правильный ответ. «Это делает концепцию абсурдной, потому что она будет такой же, как до сих пор» - вы можете более подробно объяснить, что вы подразумеваете под этим. Вы также можете подумать о том, какие «опасные» разрешения вам понадобятся. Обычно «получать данные, хранить их, отправлять» не требуют «опасных» разрешений, кроме случаев, когда вы работаете с произвольными местоположениями на внешнем хранилище. – CommonsWare

+0

Если я правильно понял концепцию, разрешения не должны запрашиваться до того, как они действительно будут использованы. Вот почему я называю это абсурдным, но, возможно, я просто ошибаюсь в этот момент. Я работаю над какой-то галереей, где мне нужно хранить данные на внешнем хранилище, чтобы другие приложения (например, стандартная галерея), или пользователь сам мог легко получить к ним доступ. – Agyss

ответ

0

Если у меня есть правильная концепция, разрешения не должны запрашиваться до их фактического использования.

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

Мое общее правило: отложить запрос разрешения до тех пор, пока пользователь не предпримет какой-то позитивный шаг, который приведет к пути кода, требующего этого разрешения.

В некоторых приложениях этот «позитивный шаг» просто запускает приложение, так как разрешения необходимы сразу. В этом случае вы проверяете разрешения в onCreate() активности вашего запуска.

В других приложениях этот «позитивный шаг» может быть нажатием кнопки на панели действий или на элементе навигационного элемента или на кнопке или на элементе RecyclerView и т. Д. В этом случае вы можете задержка с запросом разрешения до тех пор, пока пользователь не наберет эту вещь, поэтому пользователям, которые никогда не нажимают на нее, никогда не придется запрашивать разрешение.

Итак, посмотрите, когда и как начнется ваше обслуживание. Это определит, что означает «позитивный шаг» пользователя, который должен быть связан с запросом необходимых разрешений.

+0

Хорошо, поэтому я понял это до сих пор. Но тогда я должен спросить: в чем смысл этого? Если пользователи получат множество запросов на запрос при запуске приложений, они будут игнорировать их и просто принять их, поэтому эффект не лучше, чем тот, который до сих пор принят при установке. Это просто больше для нас и раздражает пользователей - не так ли? – Agyss

+0

@Agyss: разработчики найдут способы доставить значение без запроса и требующих разрешений в 'onCreate()'.Помимо этого, только потому, что пользователь решил предоставить вам разрешение, это не означает, что вы будете иметь это разрешение навсегда, так как пользователь может отменить его через настройки в любой момент. Предоставление такого рода гранулярности разрешения - по сравнению с классическим подходом «все или ничего» - действительно является целью здесь. – CommonsWare

Смежные вопросы