Witam,
pisze niewielka aplikacje na zaliczenie w j2me i napotkałem pewien problem, a mianowicie staram się pobrać adres url konkretnego urządzenia wybranego z listy, niestety nie wiem czemu wyrzuca mi bląd:
java.lang.NullPointerException
at ksiazka.Klient.szukajUslugi(Klient.java:161)
sam już nie wiem czy coś źle robię czy nie, czy był by ktoś w stanie pomóc?
package ksiazka;
import javax.bluetooth.*;
import javax.microedition.io.*;
import java.io.*;
import java.util.Vector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.obex.ServerRequestHandler;
class Klient implements Runnable, DiscoveryListener{
private ksiazka m;
private LocalDevice urzadzenie;
private DiscoveryAgent wyszukiwarka;
private Vector urzadzenia;
private ServiceRecord usluga = null;
public ServiceRecord [] usluga2 = null;
private UUID[] IDki;
private int[] atrybuty;
private boolean znalezionoUsluge = false;
private boolean zakonczono = false;
private static final int ATRYBUT_WERSJI = 0x3232;
private static final UUID UUID_SERWERA = new UUID("ABCDEF12345678998877665544332211", false);
int IDurzadzenia=0;
int zmienna =0;
public Klient(ksiazka _m)
{
m = _m;
urzadzenia = new Vector();
IDki = new UUID[2];
IDki[0] = new UUID(0x1101);
IDki[1] = UUID_SERWERA;
atrybuty = new int[1];
atrybuty[0] = ATRYBUT_WERSJI;
Thread w = new Thread(this);
w.start();
}
public synchronized void run()
{
try
{
urzadzenie = LocalDevice.getLocalDevice();
wyszukiwarka = urzadzenie.getDiscoveryAgent();
wyszukiwarka.startInquiry(DiscoveryAgent.GIAC,this);
}
catch (Exception e)
{
e.printStackTrace();
m.notifyDestroyed();
}
}
public void deviceDiscovered(RemoteDevice urzadzenie, DeviceClass rodzaj)
{
if (urzadzenia.indexOf(urzadzenie) == -1)
{
urzadzenia.addElement(urzadzenie);
//lista urzadzen
String lista;
try
{
lista = urzadzenie.getFriendlyName(true);
m.ListaUrzadzen(lista);
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
public void servicesDiscovered(int IDTransakcji, ServiceRecord[] uslugi)
{
if (usluga == null)
{
for (int j=0;j<uslugi.length;j++)
{
DataElement de = uslugi[j].getAttributeValue(ATRYBUT_WERSJI);
long parametr = de.getLong();
if (parametr==1)
{
znalezionoUsluge = true;
usluga = uslugi[j];
break;
}
}
}
}
public void serviceSearchCompleted(int IDTransakcji, int kod)
{
if (znalezionoUsluge && !zakonczono)
{
zakonczono = true;
synchronized(this)
{
notify();
}
}
}
public void inquiryCompleted(int rodzaj)
{
if (rodzaj == DiscoveryListener.INQUIRY_COMPLETED)
{
synchronized(this)
{
notify();
}
}
else
m.notifyDestroyed();
}
public void IDUrzadzenia(int ID, int kontrolka)
{
this.IDurzadzenia = ID;
this.zmienna = kontrolka;
}
/*zmienne do wypisywania w formie*/
String cos,cos2;
int asd;
String fgh;
boolean ss;
public void szukajUslugi() throws Exception
{
RemoteDevice urzadzenie = (RemoteDevice)urzadzenia.elementAt(IDurzadzenia); // urzadzenie wybrane z listy
wyszukiwarka.searchServices(atrybuty,IDki,urzadzenie,this);
/*Jak pobrać adres url dla konkretnego urzadzenia?*/
cos = usluga.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
}
public String Alarm()
{
return cos;
}
public String Alarm2()
{
return cos2;
}
public String al()
{
return fgh;
}
}
Pozdrawiam