【问题标题】:Receiver is not working接收器不工作
【发布时间】:2013-03-13 20:32:32
【问题描述】:

我有两个实现接收器。

首次实施:



    public class ApplicationStartListener extends BroadcastReceiver {
        Context mContext;
        @Override
        public void onReceive(Context context, Intent intent) {
                mContext = context;
                Toast.makeText(mContext, "FUI", Toast.LENGTH_LONG).show();
                Log.v("Server application FUI", intent.getAction());
        }

此实现不起作用。

第二次实施:



    public class TestActiv extends Activity{

        public void onCreate(Bundle bundle){
            super.onCreate(bundle);
            setContentView(R.layout.main);
            final IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
            intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
            intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
            intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
            intentFilter.addAction(Intent.ACTION_SCREEN_ON);
            intentFilter.addAction(Intent.ACTION_CAMERA_BUTTON);



            BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    Log.v("Server applic", "FUI: " + intent.getAction());
                }
            };
            registerReceiver(broadcastReceiver, intentFilter);
        }
    }

为什么不能先实现BroadcastReceiver?

【问题讨论】:

    标签: android broadcastreceiver intentfilter


    【解决方案1】:

    要注册此接收器,它不能在 AndroidManifest.xml 中,请在运行时注册

    在任何服务中注册此接收器。

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mReceiver = new ScreenReceiver();
    registerReceiver(mReceiver, filter);
    

    【讨论】:

    • 我的项目没有活动或服务。注册接收者必须是静态的。
    • @user1854307 创建服务并在服务中编写此代码并启动服务。当然它会帮助我早些时候遇到同样的问题。我是这样解决的。
    • 我需要在 AndroidManifest.xml 中注册接收器。我做了,但这个实现不起作用。
    • @user1854307 我向你保证,它不会起作用。您需要为此创建一个服务。
    【解决方案2】:

    意图 SCREEN_ON 和 SCREEN_OFF 我不需要。只需要 PACKAGE_CHANGED。在设备上运行应用程序时是否有效?

    
        public class TestActiv extends Activity{
    
            public void onCreate(Bundle bundle){
                super.onCreate(bundle);
                setContentView(R.layout.main);
                final IntentFilter intentFilter = new IntentFilter();
                intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);  
    
    
                BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        Log.v("Server applic", "FUI: " + intent.getAction());
                    }
                };
                registerReceiver(broadcastReceiver, intentFilter);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多