作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 android xml rpc 来安装服务器。为此,我正在使用和 intentService。唯一的问题是,当服务器类启动时,我的包含服务器的 onHandleIntent 永远不会被调用。
我做了一些研究,发现有人遇到了同样的问题,他通过使用 super class 设法解决了这个问题,但我是编程新手,没有'没有设法做他所做的事==> link
这是我的代码:
package tfe.rma.ciss.be;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlrpc.android.MethodCall;
import org.xmlrpc.android.XMLRPCServer;
import android.app.IntentService;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import java.io.IOException;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Server extends IntentService {
public String myData="";
public String streamTitle = "",path="";
public void onCreate() {
Log.d("Server", ">>>onCreate()");
}
public Server() {
super("Server");
}
public void onStart (Intent intent, int startId) {
Log.d("Server", ">>>Started()"); }
@Override
protected void onHandleIntent(Intent intent) {
Log.d("Server", ">>>handlingIntent()");
try {
ServerSocket socket = new ServerSocket(8214);
XMLRPCServer server = new XMLRPCServer();
Log.d("Server", ">>>opening on port" + socket);
while (true) {
Socket client = socket.accept();
MethodCall call = server.readMethodCall(client);
String name = call.getMethodName();
if (name.equals("newImage")) {
ArrayList<Object> params = call.getParams();
// assume "add" method has two Integer params, so no checks done
myData = (String)( params.get(0));
//int i1 = (Integer) params.get(1);
server.respond(client, new Object[] {200});
/*intent = new Intent (this, ParseFunction.class);
startService (intent); */
Toast.makeText(this, myData, Toast.LENGTH_SHORT).show();
Log.d("ParseFunction", ">>>Started()");
Intent i = new Intent( this, B.class );
i.putExtra( "Azo", myData);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity( i );
} else {
server.respond(client, null);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
}
最佳答案
如果您到了这里但没有任何效果,请检查您的 list 如下所示:
<service android:name=".subpackage.ServiceClassName" >
</service>
不是这样的:
<service android:name=".subpackage.ServiceClassName" />
xml 结束标签有问题。第一个有效。第二个是合法的,但不起作用。
关于java - 意向服务 : why my onHandleIntent is never called?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9080380/
是否可以将我的应用程序的用户从我的 Android 应用程序重定向到我在最近发布的 Pebble 商店中的表盘条目? 从技术上讲,我想知道新的 2.0.0 Pebble 应用程序是否捕获任何 URI
是否可以启动 genius scan(或类似的东西,只要它是免费的)作为获取其图片的 Intent ?或者让它出现在“打开方式”对话框中?我已经尝试联系制造商并用谷歌搜索了这个问题。 最佳答案 更新
我是一名优秀的程序员,十分优秀!