2013-04-15 13 views
13

Mam problem z wysłaniem Broadcast z aplikacji, która zostanie załadowana w niestandardowym romie jako aplikacja systemowa (przy użyciu android:sharedUserId="android.uid.system" w Manifest).używanie sendBroadcast w aplikacji systemowej

Problem Dostaję jest gdy próbuje wykonać proste sendBroadcast:

Intent newIntent = new Intent(intent.getExtras().getString(BUNDLE_ACTION_TO_REPLY_ON)); 
newIntent.putExtra(BUNDLE_FILE_URI, bitmapFile.getAbsolutePath()); 
newIntent.putExtra(BUNDLE_REPLY_WIDTH, width); 
newIntent.putExtra(BUNDLE_REPLY_HEIGHT, height); 
newIntent.putExtra(BUNDLE_REPLY_EXTRA, extra); 
context.sendBroadcast(newIntent); 

Dostaję tego ostrzeżenia w logcat:

Calling a method in the system process without a qualified user

To jest wypompowywana przez ContextImpl.java w procesie warnIfCallingFromSystemProcess().

Czy ktoś wie dlaczego (i czy muszę go "naprawić")?

+0

Czy możesz pokazać, gdzie zainicjujesz kontekst? – RvdK

+0

jest przekazywana jako część Broadcast Receiver ('public void onReceive (końcowy kontekst kontekstowy, ostateczna intencja intencji)') – Graeme

+0

To BroadcastReceiver jest twoją aplikacją systemową? – RvdK

Odpowiedz

9

Użyj poniższej funkcji zamiast sendBroadcast (intent intent).

nieważne sendBroadcastAsUser (intent intencją, UserHandle użytkownika)

np

context.sendBroadcastAsUser (newIntent nowa UserHandle (UserHandle.USER_CURRENT));

+0

To nie może być używane przez nieinstalowane aplikacje, przeczytaj tutaj: [link] (http://goo.gl/J1GIXq) – MatPag

+0

@Mat: Tak. dotyczy tylko aplikacji systemowej. – sMiLo

+0

Co to jest parametr 'UserHandle.USER_CURRENT'? –

Powiązane problemy