2013-06-05 8 views
8

Moja aplikacja nie odbiera wiadomości SMS po zainstalowaniu aplikacji Go SMS. Ustawiłem najwyższy priorytet i próbowałem zainstalować moją aplikację przed zainstalowaniem aplikacji Go SMS. Jednak Go SMS zawsze wysyła SMS-y przed moim. (Pierwsza koncepcja zainstalowanej aplikacji nie działa na moim telefonie.)Nie otrzymasz wiadomości SMS nawet po ustawieniu najwyższego priorytetu i zainstalowaniu najpierw

Jestem ciekaw, co robią twórcy Go SMS. Jak ich aplikacja może zawsze przechwytywać SMS-y przed odebraniem?

Moja aplikacja działa poprawnie bez wiadomości SMS. Tak czy inaczej, oto mój manifest. Może zrobiłem coś złego.

<?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> 

znalazłem inny questions podobne do mojego problemu, ale wciąż nie może znaleźć sposób, aby go naprawić.

Edycja: mój projekt testowy jest na Github: https://github.com/entryleveldev/ansmsreceiver.

Edycja2: wciąż nie wiem, jak Android decyduje, który odbiornik najpierw ma zamiar. Z tego, co testowałem, Go SMS zawsze ma intencje. UID i kolejność instalacji nie mają znaczenia. Ale kiedy testowałem moją aplikację i Handcent SMS, kolejność instalacji ma znaczenie. Może Go SMS używa jakiegoś hacky do zrobienia tego.

Oto manifest SmsReceiver w 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> 

Ich domyślnym ustawieniem jest wyłączenie powiadomienia o innych wiadomościach (abortBroadcast). To jest dla mnie naprawdę złe.

+0

Czy próbowałeś skopiować swoje filtry zamiarów i sprawdzić, czy to coś zmieniło? – Darwind

+0

Próbowałem tego. – pt2121

+0

Hmm ok - sam mam ten sam problem w mojej aplikacji, ale ja po prostu z tym mieszkam ;-) Dodałeś także znacznik zezwalający na odbiorniku, tak jak oni to zrobili? Jeśli nie można zmienić priorytetu, muszą użyć jakiegoś hacka, aby to zadziałało. – Darwind

Odpowiedz

0

Gdy pytanie, do którego się odwołujesz, wyjaśnia, kiedy odbiornik aplikacji GO SMS zostanie wywołany, może zadzwonić pod numer abortBroadcast(). Zakładając, że są one za pomocą najwyższego priorytetu możliwe (= 2147483647) Przypuszczam, że następujący fragment z docs miałyby zastosowanie:

Kolejność odbiorniki działają w może być sterowane z Androida: priorytet atrybut dopasowania intent-filter; Odbiorniki o tym samym priorytecie będą uruchamiane w dowolnej kolejności.

Ponieważ jednak zawsze przechwytują wiadomości SMS przed aplikacją, zakładam, że magia jest gdzie indziej. Wśród swoich uprawnień, mają one następujące:

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

Do Czy zastanawiasz się nad kombinacją tych, aby sprawdzić, czy ma to wpływ na uporządkowanie zamierzonego rozwiązania?

+0

Wnikliwe, chcę zobaczyć, jak to działa. –

+0

Właśnie testowałem to, co sugerujesz. To nie działa. Dzięki, w każdym razie. – pt2121

+0

@EntryLevelDev jakiego poziomu API testujesz? – verybadalloc

Powiązane problemy