在这段代码中:
1.公共类MyReceiver扩展BroadcastReceiver 2.公共类MainActivity扩展Activity
当我的应用程序启动时,我按下 HOME 按钮并最小化它!之后,MyRecevier 正在计算 LOGCAT 中可见的电源按钮计数,但随后 MyReceiver 无法启动(在屏幕上显示)最小化活动,即 MAINACTIVITY 或任何其他新活动。
PS我想在某些点击后启动一项活动。
MyReceiver.java
public class MyReceiver extends BroadcastReceiver{
final static String TAG = "customTAG";
static int countPowerOff=0;
private Activity activity=null;
public MyReceiver (Activity activity)
{
this.activity=activity;
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Power button is pressed.");
Log.d(TAG, "Power button count is " +countPowerOff);
Toast.makeText(context, "power button clicked", Toast.LENGTH_SHORT).show();
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
{
countPowerOff++;
Log.d(TAG, "Action OFF!! Power count increased .");
Log.d(TAG, "Power button count is " +countPowerOff);
}
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
{
Log.d(TAG, "ACTION SCREEN ON");
Log.d(TAG, "Power button count is " +countPowerOff);
if(countPowerOff>2)
{
Log.d(TAG, "Power button count is " +countPowerOff);
Log.d(TAG, "Count is greater than 2 now it should start ");
countPowerOff=0;
Toast.makeText(context, "MAIN ACTIVITY IS BEING CALLED ", Toast.LENGTH_LONG).show();
Intent i = new Intent(activity,MainActivity.class);
//I have tired different flags!!
//below lines are not making any effect unable to popup MainActivity
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(i);
context.startService(i);
}
}
}}
MainActivity.java
public class MainActivity extends Activity {
static int a = 0;
MyReceiver mReceiver;
final static String TAG = "customTAG";
@Override
protected 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);
mReceiver = new MyReceiver (this);
registerReceiver(mReceiver, filter);
a++;
Log.d(TAG, "onCreate Event count : " +a);
}
public void onNewIntent()
{
Log.d(TAG, "onNewIntent started !!");
}
public void onStart()
{
super.onStart();
Log.d(TAG, "onStart event Occured !!");
}
public void onResume()
{
super.onResume();
Log.d(TAG, "onResume event occured !!");
}
@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;
}}
AndroidManifest.xml
<application>
..
..
..
..
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_SCREEN_ON"></action>
<action android:name="android.intent.action.ACTION_SCREEN_OFF"></action>
</intent-filter>
</receiver>
</application>