1

Android BroadcasReceiver の使い方を学ぼうとしています。私はこのコードを書きましたが、うまくいきません...たとえば、時刻などを変更しようとしました...何が間違っていますか?

マニフェストに追加しました:

<receiver android:name="com.example.broadcastreceiverspike.Broadcast" >
        <intent-filter android:priority="100">
            <action android:name="android.intent.action.ACTION_SCREEN_ON" />
            <action android:name="android.intent.action.ACTION_SCREEN_OFF" />
            <action android:name="android.intent.action.TIME_SET" />
        </intent-filter>
</receiver>

私の単純なBroadcasReceiver:

    public class Broadcast extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
           Log.d("BROADCAST", "It worked");
           Toast.makeText(context, "BROADCAST",  Toast.LENGTH_LONG).show();
        }
}

私のメイン アクティビティ (デフォルトのメイン アクティビティ)

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
4

4 に答える 4

0

ブロードキャスト レシーバーに関するこのチュートリアルを確認してください。

更新: このチュートリアルには次のような便利な機能がたくさんあるため、このチュートリアルを使用しているかどうかはわかりません。

@Override
public void onResume() {
    super.onResume();

    // Register mMessageReceiver to receive messages.
    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
        new IntentFilter("my-event"));
    }

    // handler for received Intents for the "my-event" event 
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
        // Extract data included in the Intent
        String message = intent.getStringExtra("message");
        Log.d("receiver", "Got message: " + message);
    }
};

@Override
protected void onPause() {
    // Unregister since the activity is not visible
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
    super.onPause();
} 

つまり、カスタム を作成しましたbroadcast receiver classが、使用していません。

また、こちらもご確認ください。

于 2013-07-04T10:15:58.570 に答える
0

必要な前提条件を追加しましたか?

uses-permission android:name="android.permission.READ_PHONE_STATE"

これは、画面がオフ、オン、またはロックされているときに処理するレシーバーです。

public class ScreenReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
    {   



    }
    else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
    {


    }
    else if(intent.getAction().equals(Intent.ACTION_USER_PRESENT))
    {

    }

}

これはマニフェストです:

    <receiver android:name=".ScreenReceiver">
        <intent-filter>
            <action android:name="android.intent.action.USER_PRESENT" />        
  <action android:name="android.intent.action.SCREEN_OFF" />
  <action android:name="android.intent.action.SCREEN_ON" />

        </intent-filter>
    </receiver>
于 2013-07-04T10:28:36.847 に答える