我正在为移动AIR应用程序编写原生Android扩展程序。我试图获取设备ID,但结果总是返回null。我无法弄清楚我做错了什么。这是本机扩展代码(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;
}
}
答案 0 :(得分:1)
您使用的是sdk4.6吗?
FREObject.newObject
会返回错误no implementation found for native freobject
,这会导致上下文获取null
。
我认为您已将sdks文件夹中的FlashRuntimeExtensions.jar
文件复制到您的java项目中。
尝试将Adobe Flash Builder 4.x\sdks\4.xx\lib\android\FlashRuntimeExtensions.jar
添加到您的jar路径中。