一首页创建一个ANE文件
 1 使用FlashBuilder 或者Eclipse 创建一个新的android项目
     A 创建文件Extension.java

package com.dabing.airextension;
              
import com.adobe.fre.*;
              
//Extension这个类是AS与JAVA交互的最基础的入口,其实很简单,也就这么点东西
public class Extension implements FREExtension {
              
    @Override
    public FREContext createContext(String arg0) {
        // new一个新的threeExtensionContext出来;
        return new MyExtensionContext();
    }
              
    @Override
    public void dispose() {
        // 这个销毁资源的方法,暂时没有什么用,空着
    }
              
    @Override
    public void initialize() {
        // 初始化方法,暂时用不着,空着先
    }
              
}
b 创建MyExtensionContext

package com.dabing.airextension;
import java.util.*;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
             
public class MyExtensionContext extends FREContext {
    public MyExtensionContext() {
    }
             
    @Override
    public void dispose() {
    }
    @Override
    public Map<String, FREFunction> getFunctions() {
        Map<String, FREFunction> functionMap = new HashMap<String, FREFunction>();
        functionMap.put("getsn", new GetIMEI());
        return functionMap;
    }
}
c 创建获取手机imei号的功能程序,你可以修改成其他功能,通过参数args来接受flash端传来的参数

package com.dabing.airextension;
            
import android.content.Context;
import android.telephony.TelephonyManager;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREInvalidObjectException;
import com.adobe.fre.FREObject;
import com.adobe.fre.FRETypeMismatchException;
import com.adobe.fre.FREWrongThreadException;
public class GetIMEI implements FREFunction {
    @Override
    public FREObject call(FREContext context, FREObject[] args) {
        // 定义方法的具体内容
        FREObject sn = null; // 声明一个FREObject对象b,待会返回用的;
        try {
            sn = FREObject.newObject(getSnNumber(context.getActivity()));
        } catch (FREWrongThreadException e) {
            e.printStackTrace();
        }
        return sn;
    }
     public String getSnNumber(Context context) {
         String imei = null;
         TelephonyManager mTelephonyMgr;
         mTelephonyMgr = (TelephonyManager) context
                           .getSystemService(Context.TELEPHONY_SERVICE);
         imei = mTelephonyMgr.getDeviceId();
         return imei;// getConfigSetting(context, CONFIGFILE, "SN");
     }
}
所有文件完成,在项目上右键导出成jar文件

2 现在创建swc文件
  新建一个flash库项目,创建时勾选“包括Adobe AIR”库
package com.dabing.airextension
{  
    import flash.external.ExtensionContext;
    public class GetAndroidPhoneSn
    {
        protected var context:ExtensionContext;
        public function GetAndroidPhoneSn()
        {
            context = ExtensionContext.createExtensionContext("com.dabing.airextension.Extension","");
        }
                  
        public function getSn(value:int):String{
            var str:String = "";
            if(context!=null){
                str = context.call("getsn",value) as String;
                trace("debug str="+str);
            }
            return str;
        }
    }
}
创建好后,在项目Bin目录下将swc拷贝出来,和jar放在一起

3 创建extension.xml文件

<extension xmlns="http://ns.adobe.com/air/extension/2.5">
    <id>com.dabing.airextension.Extension</id>
    <versionNumber>1</versionNumber>
    <platforms>
        <platform name="Android-ARM">
            <applicationDeployment>
                <nativeLibrary>myExtensionGetSn.jar</nativeLibrary>
                <initializer>com.dabing.airextension.Extension</initializer>
                <finalizer>com.dabing.airextension.Extension</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>

4 生成ane
将swc 复制一份,并将扩展名修改成zip文件,解压缩后得到一个library.swf
在这里下载 http://pan.baidu.com/share/link?shareid=229592&uk=2332322709
adt工具,使用flash builder 或者 flash cs创建一个p12,key文件
或者这里下载我创建的开发版的p12文件  http://pan.baidu.com/share/link?shareid=229601&uk=2332322709
这个key的密码是123。

然后在win命令行里,切换到你的swc,jar,xml,swf,adt工具所在的目录
输入命令
java -jar adt.jar -package -tsa none -storetype pkcs12 -keystore sphone2Key.p12 -storepass 123 -target ane myExtensionGetSn.ane extension.xml  -swc myExtensionGetSn.swc -platform Android-ARM library.swf myExtensionGetSn.jar
如果不能运行,可能你需要安装java runtime,或者检查所有文件都在及xml文件正确
这样就生成myExtensionGetSn.ane
将这个ane及swc文件加入到你的项目
就可以使用了

package
{
    import com.dabing.airextension.GetAndroidPhoneSn;
       
    import flash.display.Sprite;
    import flash.events.MouseEvent;
       
   
    [SWF(frameRate="20", width="480", height="800", backgroundColor="0xFFFFFF")]
    public class TestMyExtension extends Sprite
    {
        private var flashgetsn:GetAndroidPhoneSn;
        public function TestMyExtension()
        {
            super();
            inits();
        }
           
        private function inits():void
        {
            stage.addEventListener(MouseEvent.CLICK,onMouseClick);
        }
           
        protected function onMouseClick(event:MouseEvent):void
        {
            flashgetsn = new GetAndroidPhoneSn();
            var str:String = flashgetsn.getSn(1);
            trace("str="+str);
        }
    }
}

air for android 使用ANE来获取安卓手机IMEI号的更多相关文章

  1. error while obtaining ui hierarchy xml file...用 uiautomatorviewer 获取安卓手机软件页面时报错

    Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't ...

  2. Python爬网——获取安卓手机统计数据

    [本文出自天外归云的博客园] 1. 在安卓网上对热门机型进行爬网,取前五十: # -*- coding: utf-8 -*- import requests,re from bs4 import Be ...

  3. Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)

    结果: 1.不提示发短信卡住,点击没有反映,我猜想,可能是因为我用的是小米手机吧. 2.接收短信报错,我猜想可能是我改了里面的方法吧(哪位大神了解,求指教). 3.project -->opti ...

  4. 获取手机IMEI 号和 IP

    没什么可说的,直接上代码: public class PhoneStateCodeUtils { /** * 获取手机imei串号 */ public static String getImei(Co ...

  5. Android实例-获取安卓手机WIFI信息(XE8+小米2)

    结果: 1.必须打开Access wifi state权限,不打开权限会出图二的错误. 相关资料: http://blog.csdn.net/lyf_lyf/article/category/1735 ...

  6. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用

    一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...

  7. [Android Pro] 将你的安卓手机屏幕共享到PC或Mac上

    有时候为了方便演示一个手机app,需要把手机屏幕显示到PC或Mac上.这里提供一个方法 — 使用Vysor达到此功能. Vysor的吸引力在于3个方面: 它适用于Windows.Linux或Mac. ...

  8. 关于adb命令获取安卓手机uuid时,demon 显示启动成功,但又获取不到uuid的解决办法:现象如下所示

    * daemon not running. starting it now on port 5037 * *demon started successfully* *list of devices a ...

  9. 开发腾讯移动游戏平台SDK Android版Ane扩展 总结

    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) Android版Ane扩展 过程中所遇到的问题和相关解决方式 问题一:编译报错:Unable to resolve target 'android ...

随机推荐

  1. .NET 互联网技术简介

    概述 技术更新太快,尤其是在互联网公司里,很多新的主流技术,我们还是必须要知道和熟练使用的.下面就给大家简单介绍,入门还是需要大家更努力的去深入学习. 目录 Git 入门 常用软件安装及VS插件工具 ...

  2. JavaScript循环练习2

    折纸:折多少次和珠穆朗玛峰一样高1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 var hou = 0.0001; var cishu = 0; for(var i= ...

  3. 查看mysql主外键信息

    SELECT  *FROMinformation_schema.key_column_usage tWHERE t.constraint_schema = '库名称'AND t.constraint_ ...

  4. AVPlayerLayer

    AVPlayerLayer 最后一个图层类型是AVPlayerLayer.尽管它不是Core Animation框架的一部分(AV前缀看上去像),AVPlayerLayer是有别的框架(AVFound ...

  5. 在outlook中发邮件判断邮件发送成功的方法

    早上给企业发了求职邮件,但是发送的时候,自己发现附件比较大,因为之前比较少使用这个工具来发邮件,所以发送之后没有提醒成功与否,求职心切,内心变得比较紧张. 所以查了查方法,发现了以下解决方案,现备注下 ...

  6. linux基础命令---df

    df 显示磁盘分区上的磁盘使用状况,可以显示出文件系统名称.大小.挂载点等信息.df显示包含每个文件名参数的文件系统上可用的磁盘空间.如果不给出文件名,则显示所有当前挂载的文件系统上可用的空间.默认情 ...

  7. Python字典猜解

    摘要 目标 使用Python破解WordPress用户密码 使用Python破解zip压缩包密码 思路 通过表单提交项构建数据包,使用字典中的可选字符进行逐一排列组合暴力破解WordPress的用户密 ...

  8. 20145327 《网络对抗》Web安全基础实践

    20145327 <网络对抗>Web安全基础实践 实践过程 webgoat开启 java -jar webgoat-container-7.0.1-war-exec.jar 在浏览器输入l ...

  9. vijos 1098 合唱队形 - 动态规划

    描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…, ...

  10. decimal and double ToString problem

    decimal d2 = 0.0000002500m; Console.WriteLine(d2.ToString()); double d3 = 0.0000002500; Console.Writ ...