このコードでは:
1. public クラス MyReceiver は BroadcastReceiver を拡張します 2. public クラス 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>