Tôi có một ứng dụng một thời gian mà bây giờ tôi gọi một dịch vụ thông qua bộ thu phát sóng (MyStartupIntentReceiver). Các mã trong máy thu phát sóng để gọi dịch vụ là:Mục đích của dịch vụ phải rõ ràng: Intent
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.duk3r.eortologio2.MyService");
context.startService(serviceIntent);
}
Vấn đề là trong Android 5.0 Lollipop tôi nhận được lỗi sau (trong các phiên bản Android trước, mọi thứ hoạt động ok):
Unable to start receiver com.duk3r.eortologio2.MyStartupIntentReceiver: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.duk3r.eortologio2.MyService }
Tôi phải thay đổi điều gì để dịch vụ được khai báo là rõ ràng và bắt đầu bình thường? Đã thử một số câu trả lời trong các chủ đề tương tự khác nhưng mặc dù tôi đã loại bỏ thông báo, dịch vụ sẽ không bắt đầu.
đây có phải là dịch vụ trong ứng dụng của bạn không? – tyczj
có gói com.duk3r.eortologio2 là ứng dụng của tôi. – duk3r
Chỉ có '' trên một thành phần khi bạn muốn ứng dụng của bên thứ ba giao tiếp với thành phần đó. Bạn dường như đã rơi vào cái bẫy giả định rằng bạn cần một '' cho mọi thứ - trong thực tế, bạn thường xuyên cần một ''. Một 'Intent' rõ ràng là khi bạn chỉ định thành phần để nói chuyện trong chính' Intent', thường sử dụng hàm tạo để lấy một đối tượng Java 'Class' làm tham số thứ hai. Điều đó, thay vì ngầm 'Intent' và '' s, là những gì bạn nên sử dụng cho các thành phần cục bộ cho ứng dụng của bạn. –
CommonsWare