13

Câu hỏi này đã được hỏi vài lần trong ngăn xếp ngăn xếp, nhưng chưa có giải pháp. Tôi có bộ thu phát để nhận hành động kết nối USB. Trách nhiệm của người phát sóng là, nếu tôi có ý định khởi động ứng dụng của mình.Trong tệp kê khai tôi đã thêm bộ nhận. Tôi có cùng một logic làm việc trong GingerBread, nhưng I ICS không hoạt động. Nhiều câu hỏi như thế, broadcast-not-invokingBộ thu phát không hoạt động trong ICS nếu ứng dụng không được bắt đầu ít nhất một lần

1: Android Boot-Up BroadCast Not invokingbroadcastreciever-not-working

Nếu tôi bắt đầu ứng dụng của tôi bằng tay một lần, sau đó từ thời gian tiếp theo trên phường khi USB được kết nối ứng dụng của tôi bắt đầu tự động. cố gắng trả lời cùng một câu hỏi nhưng không có câu trả lời. Có giải pháp nào cho điều này trong ICS không?

này thu của tôi

 <receiver android:name="com.test.MyReceiver"> 
       <intent-filter> 
        <action android:name="android.hardware.usb.action.USB_STATE" /> 
        <action android:name="android.net.wifi.STATE_CHANGE" /> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 
       </intent-filter> 
      </receiver> 
    and this is my class 
    public class MyReceiver extends BroadcastReceiver { 
    . 
    . 
    . 

    public void onReceive(Context context, Intent intent) { 
. 

Am i sai ở đâu không?

Cảm ơn trước --Kozlov

+0

Tôi không có câu trả lời cho bạn, mặc dù nó có thể hữu ích nếu tôi có thể xem mã của bạn và xem có điều gì hiển nhiên không. Tôi làm gì, tuy nhiên, có một ứng dụng chỉ hoạt động tốt, ngay cả với một người biết lắng nghe khởi động trong ICS, vì vậy tôi không thể nói chắc chắn những gì vấn đề của bạn có thể. – waxspin

+0

Hi waxspin, thanx cho ur comment.Edit câu hỏi với biểu hiện và receiver.Can bạn vui lòng kiểm tra nếu bất cứ điều gì worng? Tôi có sự cho phép cần thiết cũng – Kozlov

+0

tôi nghĩ rằng tôi hiểu sai vấn đề như là một nơi mà không ai đã tung ra ứng dụng được nêu ra. Tôi sẽ phải trì hoãn ** CommonsWare ** bên dưới, vì có vẻ như anh ấy đã thử nghiệm điều này một chút công bằng. Trong trường hợp cụ thể của tôi, ứng dụng của tôi hoạt động vì nó phải được mở ít nhất một lần để nó hữu ích cho người dùng cuối. Tôi đoán điều duy nhất bạn có thể làm ở đây là điều chỉnh trải nghiệm người dùng của mình để đây không phải là vấn đề. Tôi đã không nhận thấy nó với ứng dụng của tôi, bởi vì trường hợp cụ thể của tôi không cần phải được điều chỉnh sau khi thay đổi. – waxspin

Trả lời

11

Có giải pháp nào cho điều này trong ICS?

Nó hoạt động chính xác. Kể từ Android 3.1, không BroadcastReceiver sẽ hoạt động cho đến khi người dùng đã khởi chạy hoạt động theo cách thủ công. I blogged about this eight months ago.

+0

chỉ tò mò, tại sao họ sẽ vô hiệu hóa điều này cho Broadcast Recievers, nhưng không phải là nhà cung cấp nội dung? Tôi đã thử nghiệm cùng một kịch bản này dưới cả 2.3 cũng như ICS. ContentProvider sẽ hoạt động, BR sẽ không có trên ICS, nhưng cả hai đều hoạt động dưới 2.3. – Ben

+1

@Ben: Bởi vì các nhà cung cấp nội dung không được sử dụng một cách tự nhiên. Điều này đã được thêm vào để giúp giảm phần mềm độc hại theo ổ đĩa, nội dung cài đặt, gắn một loạt các chương trình phát sóng hệ thống và thực hiện các tác vụ mà không cần bất kỳ sự tham gia của người dùng nào. – CommonsWare

+0

vâng, tôi đoán tôi có thể thấy lập luận đó, nhưng vẫn còn, có vẻ như họ có thể làm cho nó một sự cho phép thay vì hoàn toàn thay đổi cách thức hoạt động của hệ thống. Một trong những điều tôi thích về Broadcast Receivers là chúng là một bus thông báo được tích hợp ngay trong hệ điều hành với sự phân phối được đảm bảo (nếu bạn sử dụng sendOrderedBroadcast). Có vẻ như bây giờ, bảo lãnh đã biến mất, vì vậy tôi buộc phải sử dụng CP thay vào đó, đó là tốt, ngoại trừ việc tôi mất rằng quán rượu đẹp/mô hình phụ w/bộ lọc ý định. – Ben