2016-05-10 10 views
1

私は、特定の本文を持つすべてのメッセージを別の番号に転送する簡単なアプリケーションを作ろうとしています。Android:サービスからのテキストメッセージの受信と転送

私のクラスの放送受信機が呼び出されていません。任意のリードはあなたが放送を登録する必要が

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Settings.Applog("App started !!"); 
    Intent intent = new Intent(this, SMSService.class); 
    startService(intent); 
} 

SMSService.java

public class SMSService extends Service { 

private IntentFilter mIntentFilter; 
private SMSreceiver mSMSreceiver; 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() 
{ 
    super.onCreate(); 
    Settings.Applog("Service started !!"); 
    //SMS event receiver 
    mSMSreceiver = new SMSreceiver(); 
    mIntentFilter = new IntentFilter(); 
    mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
    registerReceiver(mSMSreceiver, mIntentFilter); 
} 

@Override 
public void onDestroy() 
{ 
    super.onDestroy(); 

    // Unregister the SMS receiver 
    unregisterReceiver(mSMSreceiver); 
} 

private String ConvertNumber(String from){ 
    return from; 
} 

public class SMSreceiver extends BroadcastReceiver 
{ 

    private final String TAG = this.getClass().getSimpleName(); 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Bundle bundle = intent.getExtras(); 
     String strMessage = ""; 
     Settings.Applog("Got a message!!"); 
     if (bundle != null) 
     { 
      try{ 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       SmsMessage[] msgs = new SmsMessage[pdus.length]; 
       for(int i=0; i<msgs.length; i++){ 
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
        String msg_from = msgs[i].getOriginatingAddress(); 
        String msgBody = msgs[i].getMessageBody(); 
        Settings.Applog("Message body ::"+msgBody); 
       } 
      }catch(Exception e){ 
       //Log.d("Exception caught",e.getMessage()); 
      } 

     } 
    } 
} 

}

たManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="mypackage"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 

    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service 
     android:name=".SMSService" 
     android:exported="false"> 
    </service> 

</application> 

</manifest> 
+0

許可は「」タグの外に出ます。また、着信SMSを受信するために、常に動作している「サービス」は必要ありません。あなたはReceiversを動的に登録することができますが、Kowshickの答えに示すようにReceiverクラスを静的に登録し、 'onReceive()'メソッドで処理と返信を処理する 'Service'を開始することが望ましいでしょう。 –

答えて

1

を理解されるであろうレシーマニフェストファイルのSMSを受信するためのver。 権限が働かないだけです。

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" > 
    <receiver android:name=".SMSBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.provider.telephony.SMS_RECEIVED"></action> 
     </intent-filter> 
    </receiver> 

</application> 

SMSメッセージを受信するための例として使用しますこれを:

アプリケーションタグ内には、次のようになります。それは良い出発点でなければなりません。 http://javapapers.com/android/android-receive-sms-tutorial/

+0

試してみてください。 didntは働いた。 – Vegito1044

+0

。私は実際に働いていた代替物を見つけたが、私が望むやり方ではなかった。 私は放送受信機(サービスからではない)のために別のファイルを作った、それは働いた。 – Vegito1044

関連する問題