6

Tôi có một ứng dụng không có hoạt động trình khởi chạy hoạt động bình thường từ Android 1.5 đến Android 2.3.4. Nó được bắt đầu bởi người nhận phát sóng của tôi. Tuy nhiên, trên Honeycomb (Motorola Xoom), máy thu phát sóng của tôi không hoạt động chút nào (nó không bắt bất kỳ ý định nào). Nếu tôi thêm hoạt động launcher để biểu hiện của tôi:Android - Ứng dụng [Xoom/Honeycomb] không có hoạt động LAUNCHER không hoạt động

<activity android:label="@string/app_name" android:name="com.myapp.MainActivity"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 
</activity> 

Sau đó, ứng dụng của tôi hoạt động đúng (broadcast receiver bắt tất cả các tính cần thiết và bắt đầu dịch vụ của tôi).

Tôi sẽ rất biết ơn sự giúp đỡ!

+0

Máy thu phát sóng của bạn được xác định ở đâu? –

+0

@Jon Willis: Người nhận được xác định trong tệp kê khai. CommonsWare và Gaurav đã giải thích vấn đề. Cảm ơn sự giúp đỡ của bạn! – Kacper86

Trả lời

10

Bạn đang chạy Honeycomb 3.1 trở lên? Nếu có, hãy xem here. Khi ứng dụng của bạn được cài đặt, nó đang ở trạng thái dừng. Khi ứng dụng được khởi chạy lần đầu tiên, nó được di chuyển ra khỏi trạng thái dừng.

Ứng dụng ở trạng thái dừng sẽ không được bắt đầu bởi tất cả các mục đích phát sóng. Người gửi mục đích phát sóng phải chỉ định cờ Intent.FLAG_INCLUDE_STOPPED_PACKAGES nếu nó cũng muốn khởi chạy ứng dụng đã dừng.

Intent intent = new Intent(MY_INTENT_ACTION); 
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
sendBroadcast(intent); 

Nếu bạn không thể thay đổi mã gửi ý định, đặt cược tốt nhất của bạn sẽ giữ hoạt động của trình khởi chạy. Bất cứ khi nào người dùng khởi chạy ứng dụng của bạn sau khi cài đặt, nó sẽ được chuyển ra khỏi trạng thái dừng và bạn sẽ bắt đầu nhận các chương trình phát sóng.

Lưu ý rằng người dùng có thể di chuyển ứng dụng của bạn về trạng thái đã dừng từ Quản lý ứng dụng trong cài đặt thiết bị.

+0

Cảm ơn bạn rất nhiều vì đã trả lời nhanh chóng! – Kacper86

4

Trên Android 3.1 trở lên, BroadcastReceivers sẽ không được gọi cho đến khi người dùng khởi động ứng dụng ít nhất một lần bằng một số phương tiện khác, chẳng hạn như khởi chạy hoạt động.

Vì người dùng có xu hướng rất bối rối bởi các ứng dụng không có hoạt động, bạn thực sự cần có hoạt động ngay từ đầu, để được trợ giúp trực tuyến nếu không có gì khác. Với Android 3.1, điều đó thậm chí còn quan trọng hơn.

+0

Cảm ơn bạn rất nhiều vì đã trả lời nhanh chóng! – Kacper86