【发布时间】:2014-08-21 12:11:20
【问题描述】:
我正在开发应用程序,我设置了一项服务并从套接字获取一个 url。如果设备已解锁,它工作正常,但如果设备被锁定,它可以打开浏览器但 url 是空的。有人能告诉你是什么问题吗? 我的代码在这里。
public class SocketService extends Service {
Socket socket;
private ServerSocket serverSocket;
BufferedReader in = null;
static String url=null;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
new Task().execute();
}
private class Task extends AsyncTask <Void, Integer, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
serverSocket = new ServerSocket(6066);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
while (true) {
socket = serverSocket.accept();
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
try {
StringBuilder total = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
total.append(line);
}
url = total.toString();
Log.d("NETWORK-RECEIVE","Message!:"+url);
// String url2 = "http://www.cashsource.systelligence.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setData(Uri.parse(url));
startActivity(i);
} catch (IOException e) {
e.printStackTrace();
Log.d("NETWORK-RECEIVE", "Something goes wrong: IOException");
}
} finally {
socket.close();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),"Service Started", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
帮我看看我错过了什么?
【问题讨论】:
标签: java android sockets android-intent android-service