【问题标题】:Android do not launch activity when app is running (on IntentFilter match)Android 在应用程序运行时不启动活动(在 IntentFilter 匹配上)
【发布时间】:2018-06-25 22:25:11
【问题描述】:

我正在处理 USB 设备连接。在这里,我的 Android 手机将在 HOST 模式下工作。

我在清单中指定了 Intent 过滤器,例如:

    <activity android:name=".TestActivity">
    <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>

因此,每当我的设备连接时,它都会显示 USB 权限弹出窗口并启动 TestActivity。

但如果我的应用程序正在运行并且我在其他活动中,那么它也在启动测试活动。

如果我的应用已经在运行,我想避免再次启动活动。 有可能吗?

谢谢

【问题讨论】:

    标签: android android-activity usb intentfilter


    【解决方案1】:

    BroadcastReceiver 用于USB_DEVICE_ATTACHED

    onReceive()Use this

    【讨论】:

    • 如果我再次插入 USB 硬件,那么它不应该请求用户许可才能使用该硬件。 Android 会记住硬件。
    【解决方案2】:

    这里我有解决方法。 这里 Intent 已注册到活动中,因此活动肯定会在硬件连接上启动 ( ie: on receive of this action <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />)

    1. 在不设置布局的情况下创建活动并添加完成 创建。如果您想获取设备详细信息,则可以从此处获取。
    onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        UsbDevice device = (UsbDevice)getIntent().getParcelableExtra(UsbManager.EXTRA_DEVICE);
        finish();
    }
    
    1. 清单文件为您的活动添加设置主题(此处为 TestActivity)

    android:theme="@android:style/Theme.NoDisplay"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多