2013-07-07 39 views
51

Tôi biết có một số Q ở đây hỏi xem liệu có thể thêm huy hiệu vào ứng dụng android và tất cả đều kết thúc bằng câu trả lời KHÔNG ...Facebook thêm số huy hiệu vào biểu tượng ứng dụng trong Android như thế nào?

Nhưng bằng cách nào đó phiên bản beta mới nhất của Facebook cho Android seems to do something which at least look like a badge ngay cả khi nó không chính xác về mặt kỹ thuật đó.

Trong bài đăng đó, một trong những người nhận xét cho biết có liên quan đến TouchWiz. Và also here they đề cập đến nó như là một tính năng của "S3 TouchWiz Jelly Bean Addon". Tôi vẫn sẽ đánh giá cao thông tin về cách thực hiện điều này và nếu có một số API mà tôi có thể sử dụng trong ứng dụng của riêng mình (khi chạy trong môi trường thích hợp - nghĩa là cùng một thiết bị mà FB thể hiện hành vi này) ?

+0

Chắc chắn đó không phải là một tiện ích, thay vì chỉ là một biểu tượng ứng dụng? –

+0

Khi các câu hỏi khác không có câu trả lời, bạn không nên bắt đầu câu trả lời mới. –

+0

@GabeSechan Nó không được liệt kê trong danh sách các vật dụng có sẵn như xa như tôi có thể nói. Có thể có tiện ích con không được liệt kê không? – epeleg

Trả lời

10

Nhưng bằng cách nào đó phiên bản beta Facebook mới nhất cho android không chỉ là ...

Không theo the forum thread that contains the screenshot that you linked to. Quoting vakama94:

Vâng, đó thực sự là TouchWiz chứ không chỉ là ứng dụng. Tôi có một Galaxy S II chạy Jellybean 4.1.2 và nó làm cho cùng một điều nhưng với một số ứng dụng khác

Cho dù Samsung có API công khai để cho phép ứng dụng xuất bản số được sử dụng làm huy hiệu, tôi không thể nói. Đây có thể là điều mà họ đã làm riêng với một vài công ty.

Bạn được hoan nghênh cung cấp bằng chứng về việc thấy các huy hiệu này trên màn hình chính của Android, chẳng hạn như một trong các thiết bị Nexus series.

+0

đủ công bằng - do đó giới hạn đối với các thiết bị Samsung ... vẫn Tôi hy vọng có thể ai đó có thêm thông tin về cách thức này được thực hiện ngay cả trong bối cảnh "giới hạn" này ... – epeleg

+0

Anh ấy không hỏi về "cổ phiếu" Android trong câu hỏi của mình, vậy tại sao lại có liên quan? Bạn có đề xuất phát triển TouchWiz không có nơi nào ở đây? – radley

+1

@radley: Không có nơi nào ở đây, vì các kỹ sư của Samsung có cách tốt hơn để nhận thông tin này và chỉ có các kỹ sư của Samsung làm việc trên màn hình chính TouchWiz của Samsung. Tất nhiên, có thể hiểu rằng Samsung đã xuất bản một số SDK cho phép badging của các biểu tượng launcher, như tôi đã đề cập trong câu trả lời của tôi. – CommonsWare

23

Tôi đã tìm hiểu cách thực hiện điều này cho các thiết bị Sony.

Tôi đã viết blog về nó here. Tôi cũng đã đăng câu hỏi SO riêng về điều này here.


Thiết bị Sony sử dụng lớp có tên BadgeReciever.

  1. Khai báo sự cho phép com.sonyericsson.home.permission.BROADCAST_BADGE trong file manifest của bạn:

  2. Broadcast một Intent đến BadgeReceiver:

    Intent intent = new Intent(); 
    
    intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE"); 
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity"); 
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); 
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99"); 
    intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp"); 
    
    sendBroadcast(intent); 
    
  3. Xong. Khi điều này Intent được phát, trình khởi chạy sẽ hiển thị huy hiệu trên biểu tượng ứng dụng của bạn.

  4. Để xoá biểu tượng một lần nữa, chỉ cần gửi một phát sóng mới, lần này với SHOW_MESSAGE set false:

    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false); 
    

tôi đã loại trừ chi tiết về cách Tôi thấy điều này để giữ cho các câu trả lời ngắn nhưng tất cả đều có sẵn trong blog. Có thể là một bài đọc thú vị cho ai đó.

12

Không có cách nào tiêu chuẩn để đạt được điều này; Nhiều nhà sản xuất như Sony hay Samsung đã thực hiện nó trong tùy biến Android của riêng họ.

Ví dụ trong Samsung, bạn phải phát sóng một ý với hành động BADGE_COUNT_UPDATE, chúng ta hãy MainActivity có lớp hoạt động chính của bạn và count là số bạn muốn hiển thị trong biểu tượng ứng dụng của bạn, lưu ý rằng 0 sẽ ẩn huy hiệu:

Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE"); 
intent.putExtra("badge_count", count); 
intent.putExtra("badge_count_package_name", context.getPackageName()); 
intent.putExtra("badge_count_class_name", MainActivity.class.getName()); 
context.sendBroadcast(intent); 

thiết bị Sony sử dụng "com.sonyericsson.home.action.UPDATE_BADGE" hành động với tính năng bổ sung tùy chỉnh của họ như @Marcus trả lời, vì vậy bạn cần phải thêm "com.sonyericsson.home.permission.BROADCAST_BADGE" phép ứng dụng của bạn biểu hiện và:

Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE"); 
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName()); 
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); 
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count)); 
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName()); 
context.sendBroadcast(intent); 

Lưu ý: nó mong muốn truy vấn dữ liệu của ứng dụng của bạn (context.getPackageName(), MainActivity.class.getName()) thay vì mã hóa nó chỉ trong trường hợp bạn thực hiện một số phép tái cấu trúc trong tương lai.

21

Xin chào, bạn chỉ có thể sử dụng lib này.

Hỗ trợ: Sony, Samsung, LG, HTC, Xiaomi, ASUS, ADW, APEX, NOVA, Huawei, Zuk, OPPO

ShortcutBadger

enter image description here

Add:

int badgeCount = 1; 
ShortcutBadger.applyCount(context, badgeCount); 

Xóa:

ShortcutBadger.applyCount(context, 0); 
+1

Ở đây, làm cách nào để nhận được huy hiệuChi tiết ứng dụng ở chế độ nền và thông báo đẩy đến? – Avi

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