2

我正在为移动 AIR 应用程序编写原生 Android 扩展。我正在尝试获取设备 ID,但结果总是返回为空。我无法弄清楚我做错了什么。这是本机扩展代码(java):

import android.app.Activity;
import android.provider.Settings;
import android.provider.Settings.Secure;

import android.content.Context;
import android.content.SharedPreferences;
import android.telephony.TelephonyManager;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import com.adobe.fre.FREWrongThreadException;

public class DeviceIdGetter extends Activity implements FREFunction {
    @Override
    public FREObject call(FREContext context, FREObject[] passedArgs) {
        FREObject result = null;

        TelephonyManager tManager = (TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

        try
        {
            result = FREObject.newObject(tManager.getDeviceId());
        }
        catch (FREWrongThreadException fwte)
        {
            try
            {
                result = FREObject.newObject("error");
            }
            catch (FREWrongThreadException fwte2)
            {
            }
            fwte.printStackTrace();
        }

        return result;
    }
}
4

1 回答 1

1

你用的是sdk4.6吗?

FREObject.newObject返回一个错误,这no implementation found for native freobject会导致 context get null。我认为您已将FlashRuntimeExtensions.jar文件从 sdks 文件夹复制到您的 java 项目中。

尝试将 Adob​​e Flash Builder 添加4.x\sdks\4.xx\lib\android\FlashRuntimeExtensions.jar到您的 jar 路径中。

于 2012-03-02T07:39:27.767 回答