Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Starmicronics Android SDK库无法运行_Android_Sdk_Android Manifest - Fatal编程技术网

Starmicronics Android SDK库无法运行

Starmicronics Android SDK库无法运行,android,sdk,android-manifest,Android,Sdk,Android Manifest,我已经尝试解决这个问题好几天了,但仍然没有解决它。。。请有人能帮我 我目前正在尝试开发一款应用程序,它的功能与starmicronic应用程序相同。您可以在下面找到SDK 开始时,我只是将Jar库StarIOPort3.1.Jar复制到工作区中,然后导入Main.java 我试图将此函数复制到我的主类中,但一开始我没有在清单设置中添加internet权限。在添加internet权限后,我仍然得到一个运行时执行项E/AndroidRuntime(776):java.lang.IllegalSta

我已经尝试解决这个问题好几天了,但仍然没有解决它。。。请有人能帮我

我目前正在尝试开发一款应用程序,它的功能与starmicronic应用程序相同。您可以在下面找到SDK

开始时,我只是将Jar库StarIOPort3.1.Jar复制到工作区中,然后导入Main.java

我试图将此函数复制到我的主类中,但一开始我没有在清单设置中添加internet权限。在添加internet权限后,我仍然得到一个运行时执行项E/AndroidRuntime(776):java.lang.IllegalStateException:无法执行活动的方法

但它与Star SDK配合得很好。。。但不是在我的版本中

public void PortDiscovery(View view)
{
    List<PortInfo> BTPortList;
    List<PortInfo> TCPPortList;
    final EditText editPortName;

    final ArrayList<PortInfo> arrayDiscovery;
    ArrayList<String> arrayPortName;

    arrayDiscovery = new ArrayList<PortInfo>();
    arrayPortName = new ArrayList<String>();

    try {

        BTPortList  = StarIOPort.searchPrinter("BT:");
        TCPPortList = StarIOPort.searchPrinter("TCP:");

        for (PortInfo portInfo : BTPortList) {
              arrayDiscovery.add(portInfo);
        }

        for (PortInfo portInfo : TCPPortList) {
            arrayDiscovery.add(portInfo);
        }

        arrayPortName = new ArrayList<String>();

        for(PortInfo discovery : arrayDiscovery)
        {
            String portName;

            portName = discovery.getPortName();

            if(discovery.getMacAddress().equals("") == false)
            {
                portName += "\n - " + discovery.getMacAddress();
                if(discovery.getModelName().equals("") == false)
                {
                    portName += "\n - " + discovery.getModelName();
                }
            }

            arrayPortName.add(portName);
        }


    } catch (StarIOPortException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    editPortName = new EditText(this);

    new AlertDialog.Builder(this)
    .setIcon(R.drawable.icon) 
    .setTitle("Please Select IP Address or Input Port Name") 
    .setView(editPortName) 
    .setPositiveButton("OK", new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int button)
        {
            EditText portNameField = (EditText)findViewById(R.id.editText_PortName);
            portNameField.setText(editPortName.getText());
            SharedPreferences pref = getSharedPreferences("pref", MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE);
            Editor editor = pref.edit();
            editor.putString("portName", portNameField.getText().toString());
            editor.commit();
        }
    })
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int button)
        {
        }
    })
    .setItems(arrayPortName.toArray(new String[0]), new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int select)
        {
            EditText portNameField = (EditText)findViewById(R.id.editText_PortName);
            portNameField.setText(arrayDiscovery.get(select).getPortName());

            SharedPreferences pref = getSharedPreferences("pref", MODE_WORLD_READABLE | MODE_WORLD_WRITEABLE);
            Editor editor = pref.edit();
            editor.putString("portName", portNameField.getText().toString());
            editor.commit();
        }
    })
    .show();
}
public void端口发现(视图)
{
列表BTPortList;
列表TCPPortList;
最终编辑文本编辑端口名;
最终阵列列表阵列发现;
ArrayList arrayPortName;
arrayDiscovery=新的ArrayList();
arrayPortName=新的ArrayList();
试一试{
BTPortList=StarIOPort.searchPrinter(“BT:”);
TCPPortList=StarIOPort.searchPrinter(“TCP:”);
对于(PortInfo PortInfo:BTPortList){
arrayDiscovery.add(portInfo);
}
for(PortInfo-PortInfo:TCPPortList){
arrayDiscovery.add(portInfo);
}
arrayPortName=新的ArrayList();
用于(PortInfo发现:arrayDiscovery)
{
字符串端口名;
portName=discovery.getPortName();
if(discovery.getMacAddress().equals(“”==false)
{
portName+=“\n-”+发现.getMacAddress();
if(discovery.getModelName().equals(“”==false)
{
portName+=“\n-”+discovery.getModelName();
}
}
arrayPortName.add(端口名);
}
}捕获(StarIOPortException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
editPortName=新的EditText(此);
新建AlertDialog.Builder(此)
.setIcon(R.drawable.icon)
.setTitle(“请选择IP地址或输入端口名”)
.setView(editPortName)
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener()
{
公共void onClick(对话框接口对话框,int按钮)
{
EditText端口名字段=(EditText)findViewById(R.id.EditText\u端口名);
portNameField.setText(editPortName.getText());
SharedReferences pref=GetSharedReferences(“pref”,模式世界可读,模式世界可写);
编辑器编辑器=pref.edit();
putString(“portName”,portNameField.getText().toString());
commit();
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener())
{
公共void onClick(对话框接口对话框,int按钮)
{
}
})
.setItems(arrayPortName.toArray(新字符串[0]),新的DialogInterface.OnClickListener()
{
公共void onClick(对话框接口对话框,int-select)
{
EditText端口名字段=(EditText)findViewById(R.id.EditText\u端口名);
portNameField.setText(arrayDiscovery.get(select.getPortName());
SharedReferences pref=GetSharedReferences(“pref”,模式世界可读,模式世界可写);
编辑器编辑器=pref.edit();
putString(“portName”,portNameField.getText().toString());
commit();
}
})
.show();
}

确定如果查看stacktrace中的其他异常,您可以看到它得到一个NetworkOnMainThread异常。这意味着您需要在启动搜索打印机的代码之前退出主UI线程。您可以创建线程或使用任务

答案有一个很好的例子,其中有一个简单的任务,你可以根据自己的目的进行调整。因此,为了更清楚,我认为调用PortDiscovery()方法的代码需要在任务中

安卓给出这个例外的原因是,尝试网络操作可能需要几分钟时间,然后失败。这会在那个时候锁定整个UI,因此不是一个好的做法


根据这一例外情况,Android 3.0引入了这一例外。您提到的Starmicronics网站上的Android项目的默认构建目标为7(即Android 2.1)。可能是新的示例eclipse项目具有更高的构建目标,或者运行配置在模拟器中更高版本的Android上运行。您可以在:project.properties和default.properties文件中对此进行检查。

我已经使用一些日志进行了测试,程序将在方法BTPortList=StarIOPort.searchPrinter(“BT:”)中给出运行时错误;TCPPortList=StarIOPort.searchPrinter(“TCP:”);此外,我试图在另一个项目中运行,但它不起作用。但是如果我在不同类的同一个项目(StarSDK)上创建它,它就可以工作了。我想是因为配置问题,但制造商没有明确说明。例如,制造商没有在manifest.xml中包含internet权限设置。因此,有谁能帮我们解决这个问题吗?你能给我们提供更多的信息吗?非法州例外发生在哪里?你有stacktrace吗?嗨,哈克,我不知道你是什么意思,我在这个领域很新。这里是一个示例,两个项目运行在同一代码上,但一个出现运行时错误,另一个(StarIOSDK)运行正常。我想这更像是一个配置问题。我不确定应该提供什么信息,请让我知道我可以为您获得什么,我会尽快这样做。当您在eclipse中运行应用程序时,如果您转到DDMS透视图,会有一个LogCat选项卡。调试输出转到LogCat选项卡。我希望看到整个错误,并尝试猜测可能出现的错误。谢谢你继续。我试过你告诉我的方法,