gpt4 book ai didi

android - 如何区分 SCREEN_ON 和 PHONE_STATE 广播接收器

转载 作者:行者123 更新时间:2023-11-30 03:49:02 29 4
gpt4 key购买 nike

我有两个广播。

一个用于屏幕开/关,第二个用于手机状态。如果屏幕打开,我想向用户显示我的 Activity ,但如果是电话,则不显示。

如何管理这个任何帮助将不胜感激..

最佳答案

您需要使用 if/else 条件将广播操作标识为:

public static final String Screen_on = "android.intent.action.SCREEN_ON";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Screen_on)) {
// do your job here if screen is on /off
}
else{
// send new intent to your Activity here
Intent intent = new Intent(context,Activity1.class);
intent.putExtra("status","CALL_STATE");
context.startActivity(intent);

Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING) {
// do your job here if PHONE STATE CHNAGED
}
}

}

并在 AndroidManifest.xml 中将您的 Activity 声明为 android:launchMode="singleTask" 并覆盖 onNewIntent 以在 Activity 运行时接收 Intent :

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
finishactivity();
}
private void finishactivity(){
Intent intent = getIntent();
Bundle extras=intent.getExtras();
if(extras!=null){
if(extras.getString("status").equals("CALL_STATE"))
// finish your Activity here
}
}

关于android - 如何区分 SCREEN_ON 和 PHONE_STATE 广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451856/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com