android 关闭usb设备管理器,android – USB设备访问弹出抑制?

当您在应用程序内请求权限时,似乎“默认使用此USB设备”复选框不执行任何操作(我不确定为什么此复选框甚至会显示在此弹出窗口中.

相反,您应该在清单中为您的活动注册一个意图处理程序:

...

...

>

您还必须在xml资源中创建一个过滤器文件,例如res / xml / usb_device_filter:

这里的vendor-id和product-id必须以十进制给出 – 在VID和PID之上都是0x6666.

我上面给出的也适用于USB配件(即配件是USB主机,而android是设备) – 在这种情况下,意图过滤器应该注册

并且您还必须以完全相同的方式包含元数据过滤器.

编辑

总而言之 – 如果您针对您的活动注册了intent-filter,则在连接USB设备/配件时将立即显示USB权限窗口.如果用户选中“默认使用此USB设备”框并授予权限,则会记住这一点,并且不再显示权限对话框(除非卸载应用程序或用户从应用程序管理器清除默认操作) ).

我在这里放了一个小巧,可怕的工作示例项目:

您需要编辑res / xml / usb_device_filter.xml,否则这应该允许您非常快速地测试它.

对于服务……

似乎服务无法接收USB意图.我通过制作隐藏的活动来解决这个问题,然后重新广播意图.

我在我的清单中定义它如下:

android:name=".activities.UsbEventReceiverActivity"

android:label="YOUR APPLICATION NAME - This appears in the permission popup"

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

android:noHistory="true"

android:excludeFromRecents="true"

android:taskAffinity="com.example.taskAffinityUsbEventReceiver"

android:process=":UsbEventReceiverActivityProcess"

android:exported="false"

>

(我的服务中有一个复杂的任务/流程布局,该区域的YMMV).

我定义了这样的活动:

public class UsbEventReceiverActivity extends Activity

{

public static final String ACTION_USB_DEVICE_ATTACHED = "com.example.ACTION_USB_DEVICE_ATTACHED";

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

}

@Override

protected void onResume()

{

super.onResume();

Intent intent = getIntent();

if (intent != null)

{

if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED))

{

Parcelable usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

// Create a new intent and put the usb device in as an extra

Intent broadcastIntent = new Intent(ACTION_USB_DEVICE_ATTACHED);

broadcastIntent.putExtra(UsbManager.EXTRA_DEVICE, usbDevice);

// Broadcast this event so we can receive it

sendBroadcast(broadcastIntent);

}

}

// Close the activity

finish();

}

}

最后一块拼图,透明主题(我不确定,但你可以使用内置的android半透明主题) – res / values / styles.xml:

true

@android:color/transparent

@null

true

true

false

@null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值