2013-06-05 11 views
8

SMSのインストール時にMy appはSMSを受信しません。私は最高の優先順位を設定し、Go SMSアプリをインストールする前に自分のアプリをインストールしようとしました。しかし、Go SMSは常に私の前にSMSを受け取る。 (最初のアプリインストールのコンセプトは私の電話では機能しません)最高の優先度を設定しても最初にインストールされてもSMSが届かない

私はGo SMS開発者が何をしているのか不思議です。私の前にアプリはいつもSMSを傍受できますか?

私のアプリはGo SMSなしで正常に動作します。とにかく、ここに私の目録があります。多分私は何か間違ったことをしたでしょう。

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

私は私の問題に関連する他のquestionsを見つけましたが、まだそれを修正する方法を見つけることができません。

編集:私のテストプロジェクトはGithub:https://github.com/entryleveldev/ansmsreceiverです。

Edit2:どのレシーバーが最初にインテントを取得するかをまだ決まっていません。私がテストしたことから、SMSは常に目的を得ます。 UIDとインストール順序は関係ありません。 しかし、私のアプリとHandcent SMSをテストしたところ、インストール順序は問題ありません。たぶん、SMSはこれを行うためにいくつかの種類のハッキーな方法を使用します。

ここには、SMS SMSマニフェストのSmsReceiverがあります。

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

デフォルトの設定は、他のメッセージ通知(abortBroadcast)を無効にすることです。これは本当に私にとって悪いことです。

+0

あなたのインテントフィルタをコピーして、違いがあるかどうか確認しましたか? – Darwind

+0

私はそれを試みました。 – pt2121

+0

Hmm ok - 実際に私のアプリで同じ問題が発生しましたが、私はちょうどそれと一緒に暮らしています;-) また、受信者に許可タグを追加しましたか?優先順位を無効にすることができない場合は、この作業を行うために何らかの種類のハックを使用している必要があります。 – Darwind

答えて

0

あなたが説明している質問によれば、GO SMSアプリの受信者が呼び出されると、abortBroadcast()を呼び出すことができます。彼らは可能性(= 2147483647)最高の優先度を使用していると仮定すると、私はdocsから次のスニペットが適用されることを前提としています:

受信機はアンドロイドで制御することが可能で実行順序:優先順位マッチングの 属性をインテントフィルタ。同一の 優先度を持つ受信者は、任意の順序で実行されます。

しかし、あなたのアプリの前にいつもSMSが傍受されるので、私はその魔法はどこか他の場所にあると思います。その権限の中で 、彼らは次のようしている:

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

ドゥインテントの解決の順序に影響を与えるかどうかを確認するために、これらの組み合わせを試してみてください。

+0

洞察力がある、私はこれがどうなるか見たいと思う。 –

+0

あなたが提案したものだけをテストしました。それは動作しません。とにかくありがとう。 – pt2121

+0

@EntryLevelDevどのAPIレベルでテストしていますか? – verybadalloc

3

私は同じ問題に直面しています。Androidのことでドキュメントを1として

、最高の優先順位は、1000年 http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY

でなければなりません。しかし、このアプリケーションは、ガイドラインを回避高い優先順位を使用しています。

http://forum.avast.com/offline/forum.theftaware.com/viewtopic5dcd.html

あなたはより良いガイドラインに従っ悪になることはありません。

乾杯お待ちください

関連する問題