2012-04-08 3 views
0

Я новичок в android, я пробую демонстрацию трансляции, я приложил все усилия, читая документацию, но ее не работаю. Пожалуйста, посмотрите на мой код: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, я передаю его как параметр действия в намерение. Действие определено в файле manifest.xml, и когда это действие выполняется (т. Е. При выполнении метода активности sendBroadcast (намерения)), он ищет в файле manifest.xml о получателе этого намерения. Теперь, поскольку Receiver является Receive.java, и поскольку класс расширяет BroadcastReceivet, элемент управления переходит в метод onReceive и отображает тост-сообщение. Правильно ли я понял? Если нет, то, пожалуйста, напишите мою ошибку. – user182944

Смежные вопросы