Symbian S60文件格式关联

Symbian S60文件格式关联

今天简单记录一下Symbian S60下面的文件格式关联–关联文件的(默认)打开程序。

symbian系统下面的文件关联,是通过MIME(Data-type)作为关键字的,比如对jpeg图片的关联,是以”image/jpeg” 这样的一个MIME来进行关联的,程序中需要指定可以接收这种类型的文件,以及关联的优先级,对于同一个系统下面的不同软件,如果都关联了同一个文件格式 的话,那么就按照优先级来选择最高的作为默认打开程序。

指定MIME关联以及优先级的方法是在appaif.rss里指定一个AIF_DATA的资源,比如:

RESOURCE AIF_DATA
{
app_uid=0x04e043df;
num_icons=2;
embeddability=KAppEmbeddable;
newfile=KAppDoesNotSupportNewFile;
datatype_list =
{
DATATYPE
{
priority = EDataTypePriorityHigh;
type = “image/jpeg”;
},
DATATYPE
{
priority = EDataTypePriorityHigh;
type = “image/bmp”;
}
};
}

其中优先级是一个char的类型,可以参考DATATYPE的定义:

STRUCT DATATYPE
{
LONG priority;
LTEXT8 type(KMaxDataTypeLength);
}

而优先级有如下几个常量:

enum
{
EDataTypePrioritySystem = 0xFFF9,
EDataTypePriorityHigh = 10000,
EDataTypePriorityNormal = 0,
EDataTypePriorityLow = -10000,
EDataTypePriorityLastResort = -20000
};

如果要关联的是系统可能不认识的文件,那么就需要实现一个Recognizer来进行类型识别了。Recognizer是symbian系统里面进 行文件识别的动态库,每当遇到文件的时候(比如打开文件管理器),系统都会枚举当前已经安装的所有Recognizer,传入数据指针以及文件路径,期望 得到一个MIME类型,直到获取到MIME类型或者枚举完所有的Recognizer。

Recognizer需要实现 CApaDataRecognizerType 类,其中void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer)是一个重要的入口。具体的实现可以参考手册。

===========

补充一下,对于3版和5版的SDK,DATATYPE 的信息位于app_reg.rss里面。具体的修改可以参考sdk手册。

如果要实现动态文件关联的话,可以使用ChangeDataMappingL()这个API,具体参考 http://wiki.forum.nokia.com/index.php/CS001417_- _Change_application_MIME_type_mapping。这个方法我验证是成功的(可能只有3版以上才支持)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值