2012-04-08 22 views
0

私はアンドロイドに慣れています。私はブロードキャストデモを試みていますが、私はドキュメントを読むことで最善を尽くしましたが、動作しません。私のコードを見ていてください:Android:ブロードキャストデモが動作しない

BroadcastDemoActivity.javaを

package com.broadcastdemo; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class BroadcastDemoActivity extends Activity { 
    /** Called when the activity is first created. */ 
    public static final String PUBLIC_HOLIDAYS = "com.paad.action.PUBLIC_HOLIDAYS"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent intent = new Intent(PUBLIC_HOLIDAYS); 
     intent.putExtra("Holiday", "8th April is a holiday"); 
     sendBroadcast(getIntent()); 
    } 
} 

Receive.java

package com.broadcastdemo; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class Receive extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     String message = intent.getStringExtra("Holiday"); 
     Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 

    } 

} 

たManifest.xml

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

    <uses-sdk android:minSdkVersion="15" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".BroadcastDemoActivity" 
      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=".Receive"> 
      <intent-filter>    
       <action android:name="com.paad.action.PUBLIC_HOLIDAYS"/> 
      </intent-filter>    
     </receiver> 
    </application> 
</manifest> 

私は私が気づいていない何かを逃していることを知っています、助けてください。

答えて

0

あなたの問題はsendBroadcastの呼び出しにあると思います。

Intent intent = new Intent(PUBLIC_HOLIDAYS); 
    intent.putExtra("Holiday", "8th April is a holiday"); 
    sendBroadcast(getIntent()); 

あなたは、あなたが活動をして開始されたことを意図だろうgetIntent()から返された意図を、送っている構築の意図を送信していません。

それは

Intent intent = new Intent(PUBLIC_HOLIDAYS); 
    intent.putExtra("Holiday", "8th April is a holiday"); 
    sendBroadcast(intent); 
+0

は、ああ、あなたが正しい、今それはそう、それは私の活動を開始したいくつかの暗黙の意思があるようなものです:) を働いていることでしょうか?これを私に説明してください 私の問題を解決するために多くのお礼あり – user182944

+0

はい。アクティビティにインテントフィルタが設定されているマニフェストに気付いていますか?これがメインランチャーの意図に対するフィルターです。したがって、ユーザーがランチャーでアプリケーションのアイコンをクリックすると、ランチャーはそのようなインテントを構築し、たとえば、startActivity(http://developer.android.com/reference/android/content/Context.html#startActivity (android.content.Intent)) – JesusFreke

+0

私が間違っていることを理解している場合は、指摘してください。 上記のコードでは、PUBLIC_HOLIDAYSは定数Stringです。これをアクションパラメータとしてIntentに渡しています。アクションはmanifest.xmlで定義され、そのアクションが実行されると(つまり、アクティビティのsendBroadcast(intent)メソッドの実行時に)、そのインテントの受信者についてマニフェスト・ファイル内で検索されます。 ReceiverはReceive.javaなので、クラスはBroadcastReceivetを継承しているので、コントロールはonReceiveメソッドに入り、トーストメッセージを表示します。 正しく取得できましたか?そうでない場合は、私の間違いを指摘してください。 – user182944

関連する問題