Android应用不会记住USB许可

时间:2019-01-21 22:17:34

标签: java android

每次USB设备断开连接时,我都试图停止正在处理的应用程序要求USB权限。我遵循了:USB device access pop-up suppression?运气不佳。

在拔出USB设备之前,该应用程序会记住该USB设备。

如果有问题,我正在尝试将应用程序连接到Arduino Teensy。

这就是我的清单活动

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>     <!-- For receiving data from another application -->
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </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/usb_device_filter" />

    </activity>
</application>

这是我的usb_device_filter文件:

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <usb-device vendor-id="--hidden--" product-id="--hidden--" />
</resources>

欢迎任何帮助。

编辑:我也查看了Android Developer页面,当使用意图过滤器进行USB连接时,他们说:如果用户接受,则您的应用程序将自动拥有访问设备的权限,直到断开设备连接为止。

我还要指出,建议的重复项与我要解决的问题不相同。他们的问题是有两个活动,而我的问题只有一个。

https://developer.android.com/guide/topics/connectivity/usb/host

2 个答案:

答案 0 :(得分:0)

我们最终在将USB插入手机后自动打开了该应用程序,因为我们的项目处理的应用程序全天都处于打开状态。

只要用户在打开应用程序之前连接USB且手机已解锁,则该应用程序仅请求许可一次将USB用于手机并立即记住它。重新启动手机后,手机还会记住该许可。

这是一种解决方法,但它可以满足我们的需求。希望这会帮助其他有相同问题的人。

答案 1 :(得分:-1)

正如问问者here所说,出于您的直觉(如果我理解正确),以下内容就足够了。没错,他遇到了一个不同的问题,但他开始提问,说这对于您的案例是有效的。

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