2012-08-10 25 views
5

Tôi đã thấy trong một vài mạng quảng cáo Android mà họ tuyên bố là BroadcastReceiver không có bộ lọc ý định. Một cái gì đó như thế này:Android BroadcastReceiver không có bộ lọc ý định

<receiver android:name="com.example.SampleReceiver" /> 

Tôi đoán là người nhận như vậy sẽ nắm bắt tất cả các sự kiện có thể xảy ra. Vì vậy, tôi đã cố gắng làm việc đó bản thân mình và tạo ra một SampleReceiver:

public class SampleReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     System.out.println("Event captured: " + intent.getAction()); 
    } 
} 

tôi đã tung ra ứng dụng, cố gắng để bắn một số sự kiện bằng cách thực hiện hành động khác nhau trên điện thoại của tôi và nhận thấy rằng onReceive() không được gọi dù chỉ một lần.

Vì vậy, câu hỏi đặt ra là - bộ lọc BroadcastReceiver như thế nào mà không có bộ lọc ý định hoạt động? Có lẽ nó yêu cầu các bộ lọc ý định được tạo ra thông qua mã? Nếu vậy, làm thế nào? Nếu không, thì tại sao nó không nhận được bất kỳ sự kiện nào? Những gì đang xảy ra ở đây?

+0

Bạn có lớn giá ghi tại :) – Jin35

Trả lời

0

Tôi nghĩ rằng câu hỏi/câu trả lời sau đây sẽ cung cấp cho bạn một số manh mối:

Create an IntentFilter in android that matches ALL intents

+0

Nó gợi ý rằng đó BroadcastReceiver không nhận được tất cả các sự kiện . Nhưng câu hỏi vẫn còn là: người nhận như vậy đang làm gì vậy? Dù sao cũng cảm ơn bạn. –

+0

Tôi nghi ngờ rằng họ thiết lập bộ lọc ý định từ mã mà bạn không thể thấy. – wojciii

+0

Nhưng nó vẫn không trả lời làm thế nào để họ làm điều đó :) –

5

Nếu bạn không có một số bộ lọc ý định, cách duy nhất để nhận được một cái gì đó là để gọi người nhận một cách rõ ràng. này sẽ trông như thế này:

context.sendBroadcast(new Intent(context, MyBroadcastReceiverClass.class)); 

anh chàng khác đã trả lời câu hỏi này trong các bài sau: https://stackoverflow.com/questions/10051256/broadcast-receiver-not-receiving

+0

Nếu bạn muốn kiểm tra nó bằng dòng lệnh, bạn có thể chạy 'adb shell am -n com.example/.SampleReceiver' – Jamby

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