Android应用程序不幸停止时,从真实设备运行
嗨我已经使我的第一个android应用程序,它有一个webservices连接到我的本地电脑使用XAMPP的mysql数据库我可以完美地从Android模拟器运行它没有麻烦 但我需要从我的真实设备运行,但我得到了连接到数据库的问题Android应用程序不幸停止时,从真实设备运行
到目前为止,我已更改包含Web服务的连接详细信息的文件中的IP地址,以及userfunction.java eclipse(这一个用户注册和登录功能)
在手机端,我的电脑使用LAN和我的手机连接到相同的连接使用connectify无线此无线
,但是当我登录按钮点击从我的真实的设备我得到这个在我的logcat
05-18 12:19:40.600: E/SensorManager(13663): thread start
05-18 12:19:40.725: E/SpannableStringBuilder(13663): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-18 12:19:40.725: E/SpannableStringBuilder(13663): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
05-18 12:19:47.695: E/JSON Parser(13663): Error parsing data org.json.JSONException: End of input at character 0 of
05-18 12:19:47.700: E/AndroidRuntime(13663): FATAL EXCEPTION: main
05-18 12:19:47.700: E/AndroidRuntime(13663): java.lang.NullPointerException
05-18 12:19:47.700: E/AndroidRuntime(13663): at com.mohammed.watzIslam.LoginActivity$1.onClick(LoginActivity.java:62)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.view.View.performClick(View.java:4211)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.view.View$PerformClick.run(View.java:17267)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.os.Handler.handleCallback(Handler.java:615)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.os.Handler.dispatchMessage(Handler.java:92)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.os.Looper.loop(Looper.java:137)
05-18 12:19:47.700: E/AndroidRuntime(13663): at android.app.ActivityThread.main(ActivityThread.java:4898)
05-18 12:19:47.700: E/AndroidRuntime(13663): at java.lang.reflect.Method.invokeNative(Native Method)
05-18 12:19:47.700: E/AndroidRuntime(13663): at java.lang.reflect.Method.invoke(Method.java:511)
05-18 12:19:47.700: E/AndroidRuntime(13663): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-18 12:19:47.700: E/AndroidRuntime(13663): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-18 12:19:47.700: E/AndroidRuntime(13663): at dalvik.system.NativeStart.main(Native Method)
这是保持用户注册的位置地址userfunction.java。和登录webserives
\
public class UserFunctions {
private JSONParser jsonParser;
private static String loginURL = "http://xxxx:port#/android_login_api/";
private static String registerURL = "http://xxxx:port#/android_login_api/";
private static String login_tag = "login";
private static String register_tag = "register";
// constructor
public UserFunctions(){
jsonParser = new JSONParser();
}
/**
* function make Login Request
* @param email
* @param password
* */
public JSONObject loginUser(String email, String password){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
// return json
// Log.e("JSON", json.toString());
return json;
}
/**
* function make reg. Request
* @param name
* @param email
* @param password
* */
public JSONObject registerUser(String name, String password, String email){
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", register_tag));
params.add(new BasicNameValuePair("name", name));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
// getting JSON Object
JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
// return json
return json;
}
/**
* Function get Login status
* */
public boolean isUserLoggedIn(Context context){
DatabaseHandler db = new DatabaseHandler(context);
int count = db.getRowCount();
if(count > 0){
// user logged in
return true;
}
return false;
}
/**
* Function to logout user
* Reset Database
* */
public boolean logoutUser(Context context){
DatabaseHandler db = new DatabaseHandler(context);
db.resetTables();
return true;
}
}
可有人指出,对任何错误或建议我一个解决方案
感谢
添加这些软件包:
import android.app.ProgressDialog;
import android.os.AsyncTask;
申报JSON作为类成员场:
private JSONObject json;
替换JSONObject json = jsonParser.getJSONFromUrl(loginURL,params); 与此同时:
new AsyncTask<Void, Void, Void>() {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(SplashActivity.this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Loading, please wait...");
progressDialog.show();
}
@Override
protected Void doInBackground(Void... pms) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
json = jsonParser.getJSONFromUrl(loginURL, params);
return null;
}
protected void onPostExecute(Void result) {
if(progressDialog.isShowing()) {
progressDialog.dismiss();
}
if(json != null) {
Log.e("JSON", json.toString());
}
else {
Log.e("JSON", "JSON is NULL");
}
};
}.execute();
,但它给了我错误AsyncTask无法解析到类型和其他一些,但我想这是主要原因 – user2396035
我编辑了我的答案来添加包。请在你的项目中包含上面的那些包。也可以从全新的代码中正确地复制整个代码以执行AsyncTask – Homam
现在我得到了这个SplashActivity无法解析为类型,并且JSONParser类型中的getJSONFromUrl(String,List
'分析数据org.json.JSONException时出错。
如果它在模拟器中工作,那么我敢打赌,这是一个连接问题。我要做的第一件事是从另一台电脑连接到Web服务,看看我能否得到所有正确的答案。 JSON错误是来自服务器的JSON响应长度为0字节 - 这又是一个点,因此连接性与仿真器不一样。请发布连接到服务的代码。 –
@DarkCthulhu但是当我上次在模拟器上运行它时,它是好的......我只是想这可能是连接问题 – user2396035