我正在尝试开发一个应用程序,当用户按下电源按钮时启动手电筒。
在那个过程中,我通过捕获Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON意图来了解如何监听电源按钮。
现在我正在尝试在收到这些意图后开始我的活动。
我在接收器中使用此代码来捕获意图
public class IReciever extends BroadcastReceiver{
private Activity acti = null;
public IReciever(Activity act) {
acti = act;
}
@Override
public void onReceive(Context ctxt, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Intent i = new Intent(acti, MainActivity.class);
acti.startActivity(i);
Toast.makeText(ctxt, "MAIN ACTIVITY IS BEING CALLED ", Toast.LENGTH_SHORT).show();
Log.e("In on receive", "In Method: ACTION_SCREEN_ON");
}
}
}
以下是我的MainActivity的代码
public class MainActivity extends Activity {
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Parameters params;
@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);
IReciever mReceiver = new IReciever(this);
registerReceiver(mReceiver, filter);
}
}
该应用程序显示祝酒词,我能够看到确认我能够接收意图的日志。
但我没有启动我的MainActivity。请帮帮我
答案 0 :(得分:2)
在不在活动中的清单中注册您的接收者。
并使用以下代码开始您的活动
Intent in = new Intent(context, MainActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
in.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
in.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(in);
将此代码写入onreceiver ..您检查电源开关的位置。