Отменить разрешения приложения без рута?

8

У меня есть несколько приложений, которые запрашивают ненужные разрешения. Я хотел бы отменить их, но я читал, что это невозможно без рута.

Есть ли какой - нибудь способ сделать это без корня?

RR
источник

Ответы:

9

Да, есть, хотя это не очень элегантно, и ДЕЙСТВИТЕЛЬНО плохая идея сделать это.
Приложение, к которому вы это делаете, скорее всего, сломается, если вы отозвали разрешение и оно попытается его использовать. Если этого будет недостаточно, вы потеряете данные своего приложения и не сможете выполнить обновление из Play Store. С этим сказал, что это не так сложно сделать.

Вам нужен apktool . Обратитесь к этому руководству, чтобы узнать, как его использовать (вам понадобятся команды decompile и compile.) И это при подписании apk после того, как вы закончите. Вам нужно изменить AndroidManifest.xmlфайл. Посмотрите на строки, как это:

<uses-permission android:name="android.permission.CAMERA" />

и удали его, если это тебя беспокоит.

После того, как вы закончите, перекомпилируйте приложение и подпишите его. Теперь вы можете удалить оригинальное приложение и установить новое с помощью файлового менеджера или в ADB, используя

adb install /local/path

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

RR
источник
Отлично, спасибо за ваши усилия в написании этого. Как программист, я с подозрением отношусь к мысли, что понятно, что это приведет к необработанным исключениям - интернет-соединение не всегда может быть доступно, и даже системные приложения должны кодировать этот потенциальный сбой. (Чтобы быть справедливым, я полагаю, что API вызовет исключение недопустимого исключения, а не исключение тайм-аута, которое должно обрабатываться по-разному. Но всегда должно быть универсальное исключение для всех необработанных типов, imo).
Полуфинал
Когда вы говорите, что не сможете обновить из Play Store , вы имеете в виду только приложения, которые обновляются таким образом, или после того, как этот процесс сделан для какого-либо одного приложения, никакие приложения не могут быть обновлены через Магазин? Я бы предположил, что если модифицированное приложение нуждается в обновлении, его можно просто удалить, загрузить заново из Магазина, а затем снова изменить с помощью этого инструмента?
Полуостров
Я полагаю, что хорошая стратегия, чтобы попробовать это (особенно в системных приложениях, таких как Календарь), состоит в том, чтобы удалять по одному разрешению за раз, а затем попробовать новый двоичный файл в течение нескольких недель, а затем прополоскать-повторить. Возможно, можно почувствовать, какие пропущенные разрешения доставляют больше всего хлопот, и принять решение о компромиссе между безопасностью и стабильностью.
Полуостров
Я видел сбой приложений, когда были удалены разрешения. Я думаю, что это были контакты доступа или что-то в этом роде. Это в первую очередь проблема неопытных разработчиков - большая команда с командой QA должна заниматься такими вещами. Я имел в виду, что конкретное приложение не может быть обновлено, потому что в процессе этого вы меняете ключи, используемые для подписи приложения. Вы не можете сделать это с календарем по умолчанию, так как вы не можете удалить его, так как это системное приложение. Также, если у вас произошел сбой, лолкат скажет, какого разрешения не хватает (IIRC)
RR
Возможно ли вообще получить APK для приложения, которое вы установили с маркета, если у вас нет рута?
Кидбурла