# 米家扩展程序开发入门
## 创建米家扩展程序
参考[README](README.md)开发新的米家扩展程序这一节。
## AndroidManifest.xml文件application下添加米家扩展程序配置和入口
* 必须设置model和message_handler,提供米家扩展程序运行的米家APP最低API Level版本
* 米家扩展程序不支持在AndroidManifest中自定义Application入口
* 米家扩展程序不支持在AndroidManifest中自定义Activity
* 米家扩展程序不支持自定义style
```
```
* 如何获取开发者Id
打开[米家智能平台](https://open.home.mi.com),点击“开发平台”,然后:
![](./md_images/developid_1.jpg)
![](./md_images/developid_2.jpg)
## 创建MessageReceiver类,继承IXmPluginMessageReceiver,入口函数
类名必须保持和AndroidManifest.xml中配置message_handler一致
```
public class MessageReceiver implements IXmPluginMessageReceiver {
public static final String MODEL = "xiaomi.demo.v1";
@Override
public boolean handleMessage(Context context, XmPluginPackage xmPluginPackage, int type,
Intent intent,
DeviceStat deviceStat) {
switch (type) {
case LAUNCHER: {// 启动入口
XmPluginHostApi.instance().startActivity(context, xmPluginPackage, intent,
deviceStat.did, MainActivity.class);
return true;
}
default:
break;
}
return false;
}
@Override
public boolean handleMessage(Context context, XmPluginPackage xmPluginPackage, int type,
Intent intent, DeviceStat deviceStat, MessageCallback callback) {
// TODO Auto-generated method stub
return false;
}
}
```
handleMessage中除了可以处理LAUNCHER消息外,还可以处理其他类型的消息,这个根据自己的产品需求来进行。目前支持的所有消息类型如下:
* LAUNCHER
* 入口消息,APILevel:1
* PUSH_MESSAGE
* push消息,APILevel:2
* MSG\_PAGE\_NAVIGATE
* 页面跳转,APILevel:3
* MSG\_BROADCAST\_BLUETOOTH\_DEVICE\_ACTION\_ACL\_CONNECTED
* 系统蓝牙广播ACL_CONNECTED,APILevel:6
* MSG\_BROADCAST\_BLUETOOTH\_DEVICE\_ACTION\_ACL\_DISCONNECTED
* 系统蓝牙广播ACL_DISCONNECTED,APILevel:7
* MSG\_BLUETOOTH\_PAIRING
* 蓝牙配对,APILevel:8
* MSG\_BLUETOOTH\_DISCONNECT
* 蓝牙断开连接,APILevel:9
* MSG\_SCENE\_GET\_CONDITION\_EXTRA
* 获取场景自定义条件中的extra字段,APILevel:10
* MSG\_UPNP\_CONNECT