我使用下面的代码,但没有找到解决方案。
MyReceiver.java:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v("onReceive", "Power button is pressed."); Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) .show(); } }
和 MainActivity.java:
import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
和 AndroidManifest.xml:
<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=".MyReceiver"> <intent-filter> <action android:name="android.intent.action.SCREEN_OFF"></action> <action android:name="android.intent.action.SCREEN_ON"></action> <action android:name="android.intent.action.ACTION_POWER_CONNECTED"></action> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"></action> <action android:name="android.intent.action.ACTION_SHUTDOWN"></action> </intent-filter> </receiver> </application>
但点击时,我没有收到任何吐司消息Power Button。请帮助我了解如何获得PowerButton点击次数,如果点击次数等于5,请转到另一个actvity。请帮我实现这个吗?
Power Button
PowerButton
actvity
试试这个,
public class MyReceiver extends BroadcastReceiver { static int countPowerOff=0; private Activity activity=null; public MyReceiver (Activity activity) { this.activity=activity; } @Override public void onReceive(Context context, Intent intent) { Log.v("onReceive", "Power button is pressed."); Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) .show(); if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { countPowerOff++; } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { if(countPowerOff==5) { Intent i =new Intent(activity,NewActivity.class); activity.startActivity(i); } } }
和,
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); MyReceiver mReceiver = new MyReceiver (this); registerReceiver(mReceiver, filter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }