-1

私は2つの実装レシーバーを持っています。

最初の実装:



    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 を動作させないのはなぜですか?

4

2 に答える 2

0

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);
        }
    }
于 2013-03-24T17:16:30.003 に答える
0

このレシーバーを登録するには、これを AndroidManifest.xml 内に含めることはできません。実行時に登録してください

この受信機を任意のサービスに登録します。

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
于 2013-03-24T08:36:18.713 に答える