2010-12-03 21 views
0

私は受信したことに応答するだけの簡単なアンドロイドアプリを作成しています。 私はbraodcastreceiverを使用してSMSを受信して​​います。私はそれが強制近くを言うSDK 2.1 AVD上でこの活動を実行し、そのポートにSMSを送信すると活動のための コードBroadCastReceiver Force Close for SMS受信

package com.om; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.widget.Toast; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 

public class MyTest extends Activity { 
    public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
    /** Called when the activity is first created. */ 
    BroadcastReceiver smsReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context _context, Intent _intent) { 
     System.out.println("SMS Received"); 
    } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     IntentFilter filter = new IntentFilter(SMS_RECEIVED); 
     registerReceiver(smsReceiver, filter); 
    } 
} 

です。 コードに誤りがありますか教えてください。 ありがとうございます。

+1

あなたは間違いなくlogcatと、アプリケーションをクラッシュさせる行を投稿する必要があります。あなたはアプリケーションマニフェストであなたの受信機を宣言しましたか? –

+0

Bicouが言ったように、何が起こっているかについて私たちが何かを言ってくれるように、近い将来のスタックトレースを表示する必要があります。これはおそらくそれを引き起こしていませんが、System.out.printlnを使用するのではなく、AndroidロギングシステムLog.d( "smsReceiver"、 "SMS Received")を使用する必要があります –

答えて

0

適切な許可を忘れたことはありませんか?

android.permission.RECEIVE_SMSこのコードは、罰金

package com.om; 

輸入アンドロイドの作品 回答のため

+0

間違った権限... 'RECEIVE_SMS'は、探しています...それは例外ではないので、それはそうではありません。それは意図を受け取っていないだけです。 – st0le

+0

ご連絡ありがとうございます。 – JoxTraex

+0

私はそれが例外をスローすると信じています。適切な許可なしに受信機を登録しようとしているからです。 – JoxTraex

1

こんにちはありがとう:私はあなたのマニフェストにSMSのために信じて

は、あなたのようなものを持っている必要があります。 app.Activity;

輸入android.content.BroadcastReceiver。

import android.content.Context;

import android.content.Intent;

輸入android.content.IntentFilter。

import android.os.Bundle;

import android.widget.Toast;

import android.telephony.SmsManager;

輸入android.telephony.SmsMessage。

パブリッククラスのMyTestアクティビティを拡張{ パブリッククラスSmsReceiverはBroadcastReceiver {

@Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     Context context = getApplicationContext(); 
     String msg = "SMS Received....."; 
     int duration = Toast.LENGTH_LONG; 
     Toast toast = Toast.makeText(context, msg, duration); 
     toast.show(); 

    } 



} 
public static final String SMS_RECEIVED = 
    "android.provider.Telephony.SMS_RECEIVED"; 
/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    IntentFilter inf = new IntentFilter(SMS_RECEIVED); 
    SmsReceiver sr = new SmsReceiver(); 
    registerReceiver(sr, inf); 

} 

} Iが正しくアクセス許可を与えている

を拡張します。 しかし、私がマニフェストにbroadcastreceiverを登録しようとしたとき それはアプリケーションを強制的に閉じます。 誰かが教えてくれればログを伝える方法がわかりません。