2011-07-06 37 views
7

Chuyển SMS gần đây được cập nhật bằng tính năng mới "Tắt thông báo tin nhắn khác". Tính năng này khiến các ứng dụng khác nghe tin nhắn SMS đến không phát ra. Ví dụ ứng dụng của tôi, Shady SMS, lắng nghe phát sóng SMS đến để gửi thông báo và thực sự trích xuất và lưu tin nhắn SMS.Ngăn chặn/Chặn BroadcastReceiver trong một ứng dụng khác

Khi tính năng mới này trong Go SMS được bật, Shady không gửi thông báo hoặc lưu tin nhắn cuối cùng không phản hồi chút nào đối với phát sóng SMS đến.

Dời SMS bằng cách nào đó phải hủy đăng ký nhận chương trình phát sóng của ứng dụng vì không thể hủy bỏ phát sóng SMS đến. Bộ lọc ý định của tôi được đặt thành android: priority = "0".

Mọi suy nghĩ?

Trả lời

11

Bộ lọc chủ ý của tôi được đặt thành android: priority = "0".

Đây là mức ưu tiên thấp nhất có thể. Tất cả các ứng dụng khác sẽ có cơ hội đầu tiên trước khi nói đến bạn. Trích dẫn số documentation:

Nó kiểm soát thứ tự nhận tín hiệu phát sóng để nhận tin nhắn quảng bá. Những người có giá trị ưu tiên cao hơn được gọi trước những giá trị thấp hơn. (Đơn đặt hàng chỉ áp dụng cho các tin nhắn đồng bộ; nó bị bỏ qua cho các thông điệp không đồng bộ.)

Vì vậy, chúng đơn giản gọi số abortBroadcast(). Họ có thể có ưu tiên của họ được cắm vào mái nhà.

+0

Tôi nghĩ rằng họ đang làm điều gì đó vui nhộn. Trong Go SMS, bạn có thể tắt tính năng này. Khi Shady bị vô hiệu hóa gửi thông báo của nó, và sau đó Go SMS gửi thông báo của nó. Vì vậy, với các tính năng vô hiệu hóa Shady đáp ứng với các tin nhắn sms phát sóng đầu tiên, suy ra rằng Go SMS không nhận được phát sóng đầu tiên cho nó sẽ bị hủy bỏ lần lượt cho Shady không nhìn thấy nó. –

+0

Tôi đã thử đặt mức độ ưu tiên thành 2147483647 và hủy bỏ chương trình phát sóng sau khi tôi kích hoạt luồng của mình trong bộ thu. Go SMS vẫn bỏ qua người nhận của tôi. Ưu tiên mất một int và thậm chí với các giá trị tối đa nó vẫn bị ghi đè. –

+0

@Noah Seidman: Bạn đã thử một int không dấu? – CommonsWare

0

Ưu tiên của SMS Pro là tối đa 2147483647 (2^31-1). Bạn cũng có thể đặt giá trị này. Nếu ưu tiên là cùng một hệ điều hành Android sẽ phục vụ "cũ" ứng dụng, một trong những bạn đã cài đặt đầu tiên. Tôi nói điều này từ kinh nghiệm của tôi tôi không có google nói về vấn đề này.

+0

Tôi có thể xác nhận rằng lý thuyết về chiến thắng ứng dụng lâu đời nhất này là không đúng sự thật. Không phải là ứng dụng mới nhất thắng. Có lẽ tên gói của nó. Chúc Google sẽ nói. – PVS

+0

tôi kiểm tra xem tên gói có không ưu tiên ứng dụng để nhận mục đích –

20

GoSMS có mức độ ưu tiên được đặt là 2147483647, nhưng đó không phải là "tối đa" (nó là số nguyên lớn nhất) - nó quá cao. Tài liệu Android cho SYSTEM_HIGH_PRIORITY là 1000 (http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY) và mức độ ưu tiên ứng dụng phải dưới mức này - nó không phải là ứng dụng hệ thống.

Điều này sẽ tạo ra hành vi không thể đoán trước. (GoSMS không phải lúc nào cũng loại bỏ các thông báo ứng dụng khác - abortBroadcast chỉ hoạt động khi chúng nhận được nó trước, thường dựa trên thứ tự cài đặt, nhưng không phải lúc nào.) Các ứng dụng cấp hệ thống sẽ thực thi, sau đó Android sẽ cố gắng phân loại các ứng dụng không thuộc hệ thống. Nếu bạn nhìn vào mã nguồn, thứ tự thực hiện dựa trên mức độ ưu tiên, nhưng các cuộc gọi để chọn thứ tự ứng dụng không nhất quán đối với các ứng dụng trên 999 hoặc cho các ứng dụng có cùng mức độ ưu tiên. Nó có thể là theo thứ tự cài đặt, nhưng thay đổi hệ thống có thể dẫn đến các lệnh thực hiện khác (mà tôi đã thấy nhiều lần với việc kiểm tra điều này).

Điều này thực sự nên được sửa bởi GoSMS (và nhiều ứng dụng khác có sai). Chỉ vì "ưu tiên" là một số nguyên, nó không có nghĩa là giá trị cao nhất của số nguyên làm cho mức độ ưu tiên cao nhất. (Cũng giống như một URL web là một chuỗi, nhưng không phải tất cả các giá trị chuỗi đều hợp lệ.) Ngoài ra, GoSMS nên biết rằng các ứng dụng khác có thể muốn xử lý tin nhắn SMS không hiển thị cho người dùng. Nếu họ chụp và hiển thị nó cho người dùng, điều đó là vô nghĩa.

+12

I HATE Go SMS để thực hiện việc này không. Đó là một trong những thứ xâm lấn nhất mà bạn có thể thực hiện trong một ứng dụng trên điện thoại của người dùng. Họ cần cho phép chương trình phát sóng trôi qua! –

+2

Tôi nghĩ rằng nó là ok để hủy bỏ phát sóng, và trong trường hợp của họ người dùng muốn nó bằng cách chọn tùy chọn thích hợp về điều này .. Điều gì là không công bằng là họ đang sử dụng ưu tiên tối đa tuyệt đối .. Tôi đã gửi cho họ một email về nó và hy vọng rằng nó sẽ được sửa chữa sớm –

+0

@JIM GO SMS nên biết, nhưng nó cố gắng không biết –

2

Tải apktool http://code.google.com/p/android-apktool/

tải Auto-dấu Created By Dave Đà illest 1 http://www.mediafire.com/?j9n7o6ub9urkfwy

trong thư mục đã giải nén apktool và NICEBUTWRONGLYWRITTEN.APK chạy cmd trong cmd apktool d -d NICEBUTWRONGLYWRITTEN. APK modif1 chờ đi vào dir modif1 tìm tệp XML hiển thị đầu tiên, tìm bên trong giá trị này V = 2147483647 (tìm kiếm số 21474 83647) thay thế bằng 1 lưu tệp gần. chạy trong cửa sổ cmd apktool b -d modif1/newsmsapp.apk đợi cho đến khi xây dựng hoàn chỉnh

Làm mất builded newsmsapp.apk vào thư mục với signapk, dán nó ở đó chạy cmd cd vào thư mục với signapk loại: dấu newsmsapp.apk

cài đặt trên của bạn newsmsapp.apk điện thoại

thực hiện.

+0

Tôi đã làm theo hướng dẫn của bạn, apk đã được xây dựng lại và ký với không có lỗi, nhưng khi tôi cài đặt nó, tôi đã không cài đặt ứng dụng lỗi .... Ngoài ra còn có một câu hỏi khác trường hợp của giá trị đó trong tệp xml tệp kê khai, tôi có thay đổi tất cả chúng thành 1 hoặc chỉ là giá trị đầu tiên không? Giả sử vấn đề không cài đặt có thể được giải quyết ... Đánh giá cao bất kỳ sự trợ giúp nào về điều này –

3

Tôi nghĩ chúng tôi đã làm một sửa chữa cho điều đó và nó làm việc :) Chúng tôi bắt đầu Broadcast Receiver qua mã

IntentFilter filter = new IntentFilter(); 
    filter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
    filter.setPriority(2147483647); 
    receiver = new SmsAnalizer(); 
    ac.registerReceiver(receiver, filter); 

này đã làm việc và chúng tôi hoàn thành công việc.

+0

nó không hoạt động đối với tôi –

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