为什么Android通过蓝牙OPP接收时严格限制可接受的文件类型?

问候stackoverflow.

最近,我正在追踪Android框架中的蓝牙操作机制.我注意到在通过OPP接收文件时,this patch会产生一些文件类型限制.

在com.android.bluetooth.opp包中,Constants.java中有一个固定的白名单

/**
 * The MIME type(s) of we Could accept from other device.
 * This is in essence a "white list" of acceptable types.
 * Today,restricted to images,audio,video and certain text types.
 */
public static final String[] ACCEPTABLE_SHARE_INBOUND_TYPES = new String[] {
    /* ... some types such as images and music ... */
};

这限制了BluetoothOppObexServerSession.java中可接受的文件类型

// Reject policy: anything outside the "white list" plus unspecified
        // MIME Types.
        if (!pre_reject
            && (mimeType == null || (!Constants.mimeTypeMatches(mimeType,Constants.ACCEPTABLE_SHARE_INBOUND_TYPES)))) {
        if (D) Log.w(TAG,"mimeType is null or in unacceptable list,reject the transfer");
        pre_reject = true;
        obexResponse = ResponseCodes.OBEX_HTTP_UNSUPPORTED_TYPE;

是什么让我们关注这种情况下的MIME类型?据我所知,我们可能希望阻止可执行文件(即* .apk,* .so),因为这些文件可能会损害我们的设备.如果阻止某些特定类型是我们在此设置列表的原因,为什么我们会在此补丁之前使用白名单而不是黑名单?当我们通过其他非蓝牙协议(如HTTP)传输文件时是否存在类似的限制?

解决方法

我把你的问题投了票,并在同一时间将其标记为非建设性的.这个问题很好,但是在错误的地方被问到:你需要在android bug跟踪器中提交你的投诉作为错误/建议.

为了回答你的问题 – 这是一种不让用户通过限制他对枪支和自己的脚进行射击来自我射击的倾向.也许自定义ROM不受此限制.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...