2013-04-15 33 views
13

Tôi gặp sự cố khi gửi Broadcast từ ứng dụng được tải trong rom tùy chỉnh dưới dạng ứng dụng hệ thống (Sử dụng android:sharedUserId="android.uid.system" trong Manifest).sử dụng sendBroadcast trong ứng dụng hệ thống

Vấn đề tôi nhận được là khi cố gắng thực hiện một sendBroadcast đơn giản:

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); 

Tôi nhận được cảnh báo này trong Logcat:

Calling a method in the system process without a qualified user

này đã được bơm ra bởi ContextImpl.java trong quy trình warnIfCallingFromSystemProcess().

Có ai biết tại sao (và nếu tôi cần "sửa" nó)?

+0

Bạn có thể cho biết nơi bạn khởi tạo ngữ cảnh không? – RvdK

+0

nó được truyền vào như một phần của Broadcast Receiver ('public void onReceive (bối cảnh cuối cùng, mục đích Intent cuối cùng)') – Graeme

+0

BroadcastReceiver này là ứng dụng hệ thống của bạn? – RvdK

Trả lời

9

Sử dụng chức năng bên dưới thay vì sendBroadcast (Ý định cố ý).

trống sendBroadcastAsUser (mục đích Ý định, UserHandle người dùng)

ví dụ,

context.sendBroadcastAsUser (newIntent, UserHandle mới (UserHandle.USER_CURRENT));

+0

Điều này không thể được sử dụng bởi các ứng dụng không được cài đặt sẵn, đọc tại đây: [link] (http://goo.gl/J1GIXq) – MatPag

+0

@Mat: Có. nó chỉ dành cho ứng dụng hệ thống. – sMiLo

+0

Tham số 'UserHandle.USER_CURRENT' là gì? –

Các vấn đề liên quan