【问题标题】:Native interfaces in codenameone,代号中的本机接口,
【发布时间】:2015-12-18 13:05:42
【问题描述】:

我正在尝试在 Android 中执行我的本机代码,但我遇到了无穷无尽的异常。我正在尝试启动本机拨号器并拨打一个号码,而无需按下拨号器上的通话按钮。请帮助并提供完整的工作代码,这就是我所拥有的

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("*151*1*1*0779083353*2*1#"));
Activity activity = new Activity();
activity.startActivity(callIntent);

本机接口代码:

public class NativeAccessImpl { 
    public void load() { 
       final CodenameOneActivity activity = (CodenameOneActivity) AndroidNativeUtil.getActivity(); 
    } 
    public void payEcocash() { 
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("*151*1*1*0779083353*2*1#")); 
        Activity activity = new Activity(); 
        activity.startActivity(callIntent); 
    } 
} 

t.start(); 

public boolean isSupported() { 
    return true; 
} 
}

【问题讨论】:

  • 您提供的代码没有显示您如何实现本机接口以及您遇到的异常。我们可以帮助您修复代码并提出可行的建议,而不是为您编写代码。
  • public class NativeAccessImpl { public void load() { final CodenameOneActivity activity = (CodenameOneActivity) AndroidNativeUtil.getActivity(); } public void payEcocash() { Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("*151*1*1*0779083353*2*1#"));活动活动=新活动();活动.startActivity(callIntent); } }; t.start(); } public boolean isSupported() { return true; } }
  • 您遇到了哪些例外情况?您是否为 Intent、Uri 和 Activity 添加了导入语句?我相信您正在连接到 ddms 的 Android 设备上进行测试?
  • 发生内部应用程序错误:java.lang.RuntimeExeception:每个线程只能创建一个 Looper。

标签: java android codenameone


【解决方案1】:

将您的本机代码包装在:

com.codename1.impl.android.AndroidNativeUtil.getActivity().runOnUiThread(new Runnable() {
   public void run() {
       // your code goes here
   }
} 

这将有效地将您的代码移动到大多数 Android 代码所期望的 Android 原生事件调度线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多