gpt4 book ai didi

java - USB主机: how to open my app only if it is not already in foreground?

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:20 26 4
gpt4 key购买 nike

我知道我可以通过此 list 配置使用 USB 主机模式:

<activity
android:name="com.mypackage.MyActivity"
android:label="@string/app_name">

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>

<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</activity>

每次连接 USB 设备时,这都会启动我的 Activity 。问题是,如果它已经在前台运行,我不希望它重新打开。如果我的应用程序的任何其他 Activity 已经在前台运行,我也不希望它启动。如何做到这一点?

最佳答案

我终于找到了要走的路。我在 list 中添加了一个新接收器:

<receiver android:name=".content.UsbReceiver">

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>

<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</receiver>

它以这种方式处理事件:

public class UsbReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (!CustomApplication.resumed) {
Context applicationContext = context.getApplicationContext();
Intent startIntent = new Intent(applicationContext, MyActivity.class);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
applicationContext.startActivity(startIntent);
}
}

}

其中 resumed 是我的自定义 Application 类中的静态字段:

public class CustomApplication extends Application {

public static boolean resumed = false;

}

我在所有 Activity 的父类中设置此字段的值:

public abstract class AbstractActivity extends Activity {

@Override
protected void onResume() {
super.onResume();
CustomApplication.resumed = true;
}

@Override
protected void onPause() {
CustomApplication.resumed = false;
super.onPause();
}

}

通过这种方式,只有当我的所有 Activity 均不在前台时,我才真正启动 MyActivity。

关于java - USB主机: how to open my app only if it is not already in foreground?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472538/

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