2011-06-28 14 views
3

は、私のソースコードであり、それは私がそれを実行するたびに閉鎖力を保持します...ここでブロードキャスト受信機の登録方法は?あなたは外にあなたの受信機を移動する必要がある。ここ

public class MainActivity extends Activity { 
    private static String content; 
    private static String phone; 
    private String number; 
    private String message; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     registerReceiver(new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       //---get the SMS message passed in--- 
       Bundle bundle = intent.getExtras();   
       SmsMessage[] msgs = null; 

       if (bundle != null) 
       { 
        number = ""; 
        message = ""; 
        //---retrieve the SMS message received--- 
        Object[] pdus = (Object[]) bundle.get("pdus"); 
        msgs = new SmsMessage[pdus.length];    
        for (int i=0; i<msgs.length; i++){ 
         msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
         number = msgs[i].getOriginatingAddress();      
         message = msgs[i].getMessageBody(); 
        } 
        //---display the new SMS message--- 
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
        SendMe(); 
       } 
      } 
     }, null); 
    } 

    public void SendMe(){ 
     PendingIntent pi = PendingIntent.getActivity(this, 0, 
       new Intent(this, MainActivity.class), 0); 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(number, null, message, pi, null); 
    } 
} 

は私が得るlogcatです...

06-28 14:39:00.331: ERROR/AndroidRuntime(396): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ftt.autospond/com.ftt.autospond.MainActivity}: java.lang.NullPointerException 
06-28 14:39:00.331: ERROR/AndroidRuntime(396):  at android.app.ActivityManagerProxy.registerReceiver(ActivityManagerNative.java:1504) 
06-28 14:39:00.331: ERROR/AndroidRuntime(396):  at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:807) 
06-28 14:39:00.331: ERROR/AndroidRuntime(396):  at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:318) 
06-28 14:39:00.331: ERROR/AndroidRuntime(396):  at com.ftt.autospond.MainActivity.onCreate(MainActivity.java:29) 
+0

すなわち} } }, null);

あなたが近い力について尋ねているとき、それは本当に私はちょうどlogcatを含めるように上記のコードを編集した例外スタックトレース – antlersoft

+0

@antlersoftでlogcatを含めることができます。見てみな。ありがとう – theITRanger22

答えて

4

onCreate。 〜

public class MainActivity extends Activity { 
private static String content; 
private static String phone; 
private String number; 
private String message; 

private BroadcastReceiver receiver = new BroadcastReceiver(){ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //---get the SMS message passed in--- 
     Bundle bundle = intent.getExtras();   
     SmsMessage[] msgs = null; 

     if (bundle != null) 
     { 
      number = ""; 
      message = ""; 
      //---retrieve the SMS message received--- 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length];    
      for (int i=0; i<msgs.length; i++){ 
       msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
       number = msgs[i].getOriginatingAddress();      

       message = msgs[i].getMessageBody(); 


      } 
      //---display the new SMS message--- 
      Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
      SendMe(); 
    } 
    } 


    }; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(YOUR_SMS_ACTION); 
    this.registerReceiver(this.receiver, filter); 
    setContentView(R.layout.main); 
    } 


public void SendMe(){ 


    PendingIntent pi = PendingIntent.getActivity(this, 0, 
       new Intent(this, MainActivity.class), 0); 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(number, null, message, pi, null); 

} 
} 
+0

@Suchi大丈夫だと思います。私はそれのために私のonCreateで何かを呼び出す必要がありますか? – theITRanger22

+0

私はonCreateでregisterReceiver呼び出しを追加しました。それは私のために働いています。それがうまくいくかどうか私に教えてください! – Suchi

+1

@Suchi =(Imはまだその後に近い力を得る。たぶん、その何かイムが編集をチェックし、間違った – theITRanger22

0

あなたの放送受信機からUIを管理しているため、強制終了が起きている可能性があります。強制終了する前にBRのonReceiveに10秒の制限があります。

あなたのトーストを生成するアクティビティコンポーネントを使用し、解決するために。

0

私はここで少し混乱しています。あなたが「SMS_RECEIVED」IntentFilterためBroadcastReceiverを登録したいが、フィルタは限り私が見ることができるように、コードのどこに宣言されていないようです。

registerReceiver {}の末尾にあるヌルをnew IntentFilter("SMS_RECEIVED"));に置き換えて、機能しているかどうかを確認してください。たぶんその理由はあなたがnullポインタの例外を取得している理由。 } } }, new IntentFilter("SMS_RECEIVED"));

関連する問題