问候stackoverflow。
最近,我正在追踪安卓框架中的蓝牙操作机制。我注意到,在通过OPP接收文件时,这个补丁会对文件类型造成一些限制。
在包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(传输文件时,是否存在类似的限制?
OBEX概要文件有望实现所交换内容格式的应用程序级互操作性。例如,如果名片被推/拉,本地应用程序应该了解名片格式,以便能够在适当的位置(例如联系人位置(显示名片,并且应该了解在其本地联系人应用程序中显示名片的格式。OPP指定电话簿(vCards(日历、消息、笔记等的内容格式。因此,服务器应该支持客户端试图发送的特定对象格式,以便能够对接收到的对象采取适当的操作。
对于更通用的文件传输/交换,可以使用FTP配置文件。
我对你的问题进行了投票,同时将其标记为非建设性问题。这个问题很好,但问错了地方:你需要在android bug tracker中作为bug/建议提交投诉。
为了回答你的问题,这是一种不让用户用枪和自己的脚开枪的倾向。也许自定义ROM不受此限制。