2013-03-27 3 views
0

Привет, я работаю над BroadCastReciver. Существует два способа определения BroadCastReciver. Первый использует код Java, а второй - в приложении AndroidManifest.xml. В моем коде второй не работает должным образом. Сообщите, где я ошибаюсь.почему BroadcastReceiver не поймает действие?

public class HotelReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     String dActionName = intent.getAction(); 
     Log.i("My Rceiver ", intent.getAction()); 
     if (dActionName.equals(Intent.ACTION_SCREEN_ON)) { 
      Toast.makeText(context, "SCREEN ON", Toast.LENGTH_SHORT).show(); 
     } else if (dActionName.equals(Intent.ACTION_SCREEN_OFF)) { 

     } 
    } 

} 

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.hotelsecurity" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="10" 
     android:maxSdkVersion="15" /> 
<uses-permission android:name="android.permission.PREVENT_POWER_KEY" /> 
    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name=".HotelReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.SCREEN_ON"/> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 
+0

* второй один не работает должным образом * означает, что он работает и и не получают ожидаемых результатов? –

+0

ρяσѕρєя K Yap Я не получаю ожидаемый результат проверки Статическая регистрация http://www.jiahaoliuliuu.com/2011/09/android-registering-broadcast-receiver.html – 143

ответ

0

Я думаю, что ваш приемник должен читать

<receiver 
     android:name="HotelReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.SCREEN_ON"/> 
     </intent-filter> 
    </receiver> 

нет точек ""

+0

без "." все равно это не работает. – 143

+0

является классом приемника в том же пакете, что и приложение, или у вас есть его под подпакет – pvyParts

0

Просто используйте этот код внутри OnCreate() для вашей деятельности,

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    HotelReceiver mReceiver = new HotelReceiver(this); 
    registerReceiver(mReceiver, filter); 
+0

Когда этот ответ поможет вам, ответ upvote/accpet. –

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