2012-10-24 19 views
6

Dodałem "android.permission.WRITE_SECURE_SETTINGS" w Manifeście. Ale nadal pojawia się komunikat o błędzie - wymagane "WRITE_SECURE_SETTINGS".Błąd uprawnień WRITE_SECURE_SETTINGS, nawet po dodaniu w Manifeście

Wiele o tym rozmawiałem i że to ustawienie jest zabronione w przypadku oprogramowania innych firm.

Jest to jakikolwiek inny sposób, w jaki mogę dodać, że moja aplikacja może uzyskać to uprawnienie?

Widzę to polecenie adb, ale nie wiem, jak to zrobić, aby dodać moją aplikację do mojego urządzenia, jest poniżej polecenia wymaga root mojego urządzenia, zanim będzie można go używać, ponieważ nie udało się skopiować przez Read-only system plików?

adb remount 
adb push app.apk /system/app/ 

Odpowiedz

10

Po pierwsze, jak przeczytałeś wcześniej WRITE_SECURE_SETTINGS NIE dostępny do zastosowań! Nie możesz więc używać tego uprawnienia niezależnie od tego, czy używasz zrootowanych, czy produkcyjnych wersji.

Tak więc, jeśli chcesz włączyć to ustawienie, utwórz własne oprogramowanie układowe, które zrobi to, czego potrzebujesz i załaduj oprogramowanie na dowolne urządzenie. Lub wprowadź zmiany w istniejących modach oprogramowania układowego (np. Cyanogen).

Niektóre inne aplikacje używają technik takich jak Reflection przy użyciu Javy, aby uzyskać dostęp do funkcji nieodkrytych za pomocą interfejsu API, prawdopodobnie możesz wypróbować to samo.

Po drugie, adb remount nie działa tak, jak w przypadku wersji produkcyjnych, chyba że telefon jest zrootowany lub oprogramowanie układowe domyślnie je włącza.

11

Niedawno zmagałem się z tym właśnie. Mój klient chciał aplikacji, która wyłączałaby NFC, gdy urządzenie ładuje (bezprzewodowa ładowarka), a następnie, gdy zostanie wyjęta z ładowarki. Używałem KitKat na moim Nexusie 7 i mimo, że miałem w manifeście WRITE_SECURE_SETTINGS, a aplikacja w /system/app/, to nie działało.

Okazuje się, że w wersji 4.4 dodano dodatkowe zabezpieczenia. W 4.3 Jednak to działa czy trzy rzeczy są prawdziwe:

  1. Manifest ma WRITE_SECURE_SETTINGS
  2. App jest w /system/app/
  3. Pakiet jest podpisany przez kluczowego (dowolny klawisz)

I zakorzenione urządzenie korzystające z niesamowitego zestawu narzędzi Nexus Root Toolkit (NRT) z http://www.wugfresh.com/nrt/, a następnie zainstalowanego BusyBox i aplikacji systemowej od:

https://play.google.com/store/apps/details?id=stericson.busybox https://play.google.com/store/apps/details?id=de.j4velin.systemappmover

Zainstalowałem mój niestandardowy podpisany plik APK i przeniosłem go na miejsce przy użyciu aplikacji systemowej, która następnie uruchomiła ponownie urządzenie. Działało idealnie. Mam nadzieję że to pomoże.

+0

Wiesz co dodatkowe zabezpieczenia są w 4.4? – brianestey

+0

Minęło ponad 6 miesięcy, ale jak pamiętam, aplikacje do uruchamiania jako root w/system/app w wersji 4.4 muszą być podpisane tym samym kluczem podpisywania APK, co ten, który podpisał system. –

+0

Wiem, że minęło trochę czasu, ale czy masz jakiś link lub odnośnik, który to stwierdza? Nie znalazłem nic online, ale przeczytałem o/system/priv-app jako nowej lokalizacji do umieszczania aplikacji systemowych ... chociaż to też nie działa dla mnie. – brianestey

3

dla API, które kiedyś, co wymagało WRITE_SECURE_SETTINGS przywileje, musiałem to ten w manifeście:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
... 
coreApp="true" 
android:sharedUserId="android.uid.system"> 

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

ref: https://github.com/android/platform_packages_apps_settings/blob/master/AndroidManifest.xml

miałem też uruchomić aplikację jako aplikacja systemowa (poniżej:/system/app). Oto jak: http://www.addictivetips.com/mobile/how-to-install-any-app-as-system-app-on-android/

0

Udało mi się rozwiązać ten problem, włączając dostęp do powiadomień.

go to settings 
click on sound and notification 
scroll down 
click on notification access 
0

poznałem tę sytuację zbyt, a potem postępuj zgodnie z poniższymi zasadami: 1.Add WRITE_SECURE_SETTINGS w jawnym 2.Upewnij własnego oprogramowania 3.Add LOCAL_CERTIRICATE: = platforma