2013-06-05 38 views
8

Ứng dụng của tôi không nhận được SMS khi cài đặt SMS Go. Tôi đặt mức ưu tiên cao nhất và đã thử cài đặt ứng dụng của mình trước khi cài đặt ứng dụng Go SMS. Tuy nhiên, Go SMS luôn nhận được tin nhắn SMS trước tôi. (Khái niệm được cài đặt ứng dụng đầu tiên không hoạt động trên điện thoại của tôi.)không nhận được tin nhắn ngay cả khi đặt ưu tiên cao nhất và được cài đặt trước tiên

Tôi tò mò về những gì các nhà phát triển Go SMS làm. Làm cách nào để ứng dụng của họ có thể chặn SMS trước tôi?

Ứng dụng của tôi hoạt động tốt mà không có SMS đi. Dù sao, đây là biểu hiện của tôi. Có lẽ tôi đã làm sai điều gì đó.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.test.ansmsreceiver" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.test.ansmsreceiver.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="com.test.ansmsreceiver.SMSReceiver" > 
     <intent-filter android:priority="2147483647"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      <action android:name="android.provider.Telephony.NEW_OUTGOING_SMS" /> 
     </intent-filter> 
    </receiver> 
</application> 

tôi thấy khác questions liên quan đến vấn đề của tôi, nhưng vẫn không thể tìm ra cách để sửa chữa nó.

Chỉnh sửa: dự án thử nghiệm của tôi nằm trên Github: https://github.com/entryleveldev/ansmsreceiver.

Chỉnh sửa2: vẫn không chắc cách android quyết định người nhận nào có ý định trước. Từ những gì tôi đã thử nghiệm, Go SMS luôn nhận được ý định. UID và trật tự cài đặt không quan trọng. Nhưng khi tôi thử nghiệm ứng dụng và SMS Handcent, thứ tự cài đặt không quan trọng. Có thể Go SMS sử dụng một số loại một cách hacky để làm điều này.

Đây là SmsReceiver trong tệp kê khai Go SMS.

<receiver android:name=".smspopup.SmsReceiver" android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="2147483647"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
     </intent-filter> 
     <intent-filter android:priority="2147483647"> 
      <action android:name="android.provider.Telephony.GSM_SMS_RECEIVED"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
     </intent-filter> 
     <intent-filter > 
      <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED"></action> 
      <data android:mimeType="application/vnd.wap.mms-message"></data> 
     </intent-filter> 
     <intent-filter > 
      <action android:name="com.android.mms.transaction.MESSAGE_SENT"></action> 
     </intent-filter> 
    </receiver> 

Cài đặt mặc định của họ là tắt thông báo tin nhắn khác (abortBroadcast). Điều này thực sự tệ với tôi.

+0

Bạn đã cố gắng sao chép bộ lọc ý định của họ và xem liệu bộ lọc có khác biệt không? – Darwind

+0

Tôi đã thử điều đó. – pt2121

+0

Hmm ok - Tôi thực sự có cùng một vấn đề bản thân mình trong một ứng dụng của tôi, nhưng tôi chỉ sống với nó ;-) Bạn cũng đã thêm thẻ quyền trên người nhận như họ đã làm? Nếu không thể ghi đè ưu tiên của họ, họ phải sử dụng một số loại hack để thực hiện công việc này. – Darwind

Trả lời

0

Là câu hỏi bạn đang liên kết để giải thích, sau khi người nhận ứng dụng GO SMS được gọi, họ có thể gọi abortBroadcast(). Giả sử họ đang sử dụng ưu tiên cao nhất có thể (= 2147483647), tôi sẽ giả định rằng đoạn sau đây từ docs sẽ được áp dụng:

Trình tự thu chạy trong thể được kiểm soát với android: ưu tiên thuộc tính của khớp bộ lọc ý định; người nhận có cùng mức ưu tiên sẽ được thực hiện theo thứ tự tùy ý.

Tuy nhiên, vì chúng luôn xảy ra để chặn SMS trước ứng dụng của bạn, tôi cho rằng ma thuật ở đâu đó khác. Trong số quyền của họ, họ đã điều sau đây:

  • "android.permission.PERSISTENT_ACTIVITY"
  • "android.permission.WRITE_SMS"
  • "android.permission.READ_SMS"

Đỗ bạn có đang cố gắng kết hợp những thứ này, để xem liệu nó có ảnh hưởng đến thứ tự của độ phân giải ý định không?

+0

sâu sắc, tôi muốn xem làm thế nào điều này đi. –

+0

Chỉ cần kiểm tra những gì bạn đề xuất. Nó không hoạt động. Dù sao cũng cảm ơn bạn. – pt2121

+0

@EntryLevelDev bạn đang thử nghiệm cấp API nào? – verybadalloc

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