【问题标题】:intent-filter android restart app if app running如果应用程序正在运行,则意图过滤器 android 重启应用程序
【发布时间】:2022-12-30 16:22:28
【问题描述】:

我正在编写一个使用串行端口的应用程序。

这就是我的 xml 的样子

<application>
    ...
    <activity>
        ...
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
            
    <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>        
</application>

连接 USB 设备时,智能手机提示我选择默认应用程序。

我允许使用它并记住选择。

但是如果我在应用程序运行时切换 usb 设备,那么当连接时,应用程序将重新启动......

如何避免这种情况?

我期待以下行为。

  1. 如果应用程序未运行,则在连接时启动

  2. 如果应用程序正在运行,那么在连接后,应用程序会继续工作,但会收到有关连接的通知。

【问题讨论】:

    标签: java android android-intent serial-port intentfilter


    【解决方案1】:

    将 android:launchMode="singleTop" 属性添加到关联的活动

    <application>
        ...
        <activity>
            ...
            android:launchMode="singleTop"
            ...
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
                
        <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>        
    </application>
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多