我试图使用BroadcastReceiver,但它不工作,请帮我解决这个问题.
MyReceiver. java
MyReceiver. java
- package com.example.broadcast_receiver;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.util.Log;
- public class MyReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context,Intent intent) {
- // TODO Auto-generated method stub
- Log.i("[BroadcastReceiver]","MyReceiver");
- if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
- Log.i("[BroadcastReceiver]","Screen ON");
- }
- else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
- Log.i("[BroadcastReceiver]","Screen OFF");
- }
- }
- }
AndroidManifest.xml中
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.broadcast_receiver"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="9"
- android:targetSdkVersion="16" />
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <receiver android:name=".MyReceiver"
- android:enabled="true"
- android:exported="false">
- <intent-filter>
- <action android:name="android.intent.action.SCREEN_ON"/>
- <action android:name="android.intent.action.SCREEN_OFF"/>
- </intent-filter>
- </receiver>
- <activity
- android:name="com.example.broadcast_receiver.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>
- </application>
- </manifest>
BroadcastReceiver无法正常工作且没有制作任何日志,请帮我解决这个问题.
解决方法
嘿尝试使用动态调用广播,我尝试了它将乖乖工作…
- public class MainActivity extends Activity {
- //Create broadcast object
- BroadcastReceiver mybroadcast = new BroadcastReceiver() {
- //When Event is published,onReceive method is called
- @Override
- public void onReceive(Context context,Intent intent) {
- // TODO Auto-generated method stub
- Log.i("[BroadcastReceiver]","MyReceiver");
- if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
- Log.i("[BroadcastReceiver]","Screen ON");
- }
- else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
- Log.i("[BroadcastReceiver]","Screen OFF");
- }
- }
- };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- registerReceiver(mybroadcast,new IntentFilter(Intent.ACTION_SCREEN_ON));
- registerReceiver(mybroadcast,new IntentFilter(Intent.ACTION_SCREEN_OFF));
- }
- }