2011-06-28 14 views
1

ここに私のソースコードです。エラーをインスタンス化できませんか?

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(); 
    registerReceiver(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); 

} 
} 

私はlogcat

6月28日17で、このエラーを取得しておく:11:23.241:ERROR/AndroidRuntime(1311): java.lang.RuntimeException:受信機 をインスタンス化できませんコム.ftt.autospond.MainActivity:java.lang.ClassCastExceptionが: com.ftt.autospond.MainActivity

は、ここに私のマニフェスト

0であります
<?xml version="1.0" encoding="utf-8"?> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".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.ftt.autospond.MainActivity"> 
     <intent-filter> 
      <action android:name= 
       "android.provider.Telephony.SMS_RECEIVED" /> 

答えて

1

は編集

あなたの活動は、あなたのandroidmanefest.xmlファイルに登録されていることを確認してください:あなたはあなたの受信機がマニフェストでそのように既存のクラスに登録することはできません。あなたのクラスでそれを動的に行うなら、あなたのマニフェストにそれを持つ必要はありません...そのレシーバーを引き出し、それが世話をするかどうかを確認してください。

+0

私は既にそれを追加しました。上の編集で自分のマニフェストを投稿しましたので、皆さんに見てもらえます..そこに問題があるかもしれません... – theITRanger22

+0

あなたのレシーバーをマニフェストのように登録することはできません。クラス内で動的にマニフェストに含める必要はありません。 その受信者をプルして、それが処理されるかどうか確認してください – Mutmatt

+0

@Mutmattそれがやった!しかし、唯一の問題は..放送受信機の内部には何も起こっていません...テキストが受信されると、トーストは表示されません。それはそれがテキストを受け取ったことを認識しないように。 – theITRanger22

1

setContentView(R.layout.main)後に受信機を登録し、

+0

それでも強制的に人間を閉じます.. =( – theITRanger22

+0

"あなたのマニフェストXMLには、受信者android:name = "com.ftt.autospond.MainActivity"> "が存在し、そうであればBroadcastReceiverが拡張されます。 –

関連する問題