Je reçois une android.os.NetworkOnMainThreadException lorsque j'exécute ce code que le pot est fourni par la fabrication de l'imprimante. L'erreur vient directement à StarIOPort.searchPrinter. Je ne reçois pas l'erreur exécutant le code de démo fourni par la fabrication.Rechercher une imprimante réseau NetworkOnMainThreadException
J'essaie de voir s'il y a des imprimantes réseau disponibles sur le réseau local.
private void PortDiscovery(String interfaceName)
{
final EditText editPortName;
ArrayList<String> arrayPortName;
List<PortInfo> BTPortList;
List<PortInfo> TCPPortList;
final ArrayList<PortInfo> arrayDiscovery;
try {
if (true == interfaceName.equals("BT")) {
BTPortList = StarIOPort.searchPrinter("BT:");
for (PortInfo portInfo : BTPortList) {
arrayDiscovery.add(portInfo);
}
}
if (true == interfaceName.equals("LAN")) {
TCPPortList = StarIOPort.searchPrinter("TCP:");
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) {
e.printStackTrace();
}
editPortName = new EditText(this);
new AlertDialog.Builder(this).setTitle("Please Input Port Name").setView(editPortName).setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int button){
EditText portNameField = (EditText)findViewById(R.id.printerName);
portNameField.setText(editPortName.getText());
}
})
.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.printerName);portNameField.setText(arrayDiscovery.get(select).getPortName());
}
})
.show();
}
Je vois comment je peux mettre la recherche de l'imprimante dans le doInBackground, mais je ne vois pas comment je peux récupérer le arraylist arrayDiscovery afin que l'utilisateur puisse sélectionner l'imprimante à utiliser? –