Android 使用IMEI作为JSON服务的参数
完成这项任务后,我又遇到了一次路障。使用JSON(它连接到本地SQLServer,我想使用IMEI作为字符串参数检索对象。我为AsyncTask调用设置了一个断点,它只是崩溃了,甚至没有遍历。每个移动设备的IMEI都存储在我的数据库中 我实现以下AsyncTask的目的是希望在我的设备上运行它,而不是在模拟器上 我怀疑这可能与我的设备有关,因为我的两个web服务都在我的PC上运行。我还更改了APN设置中的代理和端口,使其与我的服务的URI一致,但它仍然没有响应Android 使用IMEI作为JSON服务的参数,android,json,android-asynctask,imei,Android,Json,Android Asynctask,Imei,完成这项任务后,我又遇到了一次路障。使用JSON(它连接到本地SQLServer,我想使用IMEI作为字符串参数检索对象。我为AsyncTask调用设置了一个断点,它只是崩溃了,甚至没有遍历。每个移动设备的IMEI都存储在我的数据库中 我实现以下AsyncTask的目的是希望在我的设备上运行它,而不是在模拟器上 我怀疑这可能与我的设备有关,因为我的两个web服务都在我的PC上运行。我还更改了APN设置中的代理和端口,使其与我的服务的URI一致,但它仍然没有响应 TelephonyManager
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
IMEI = telephonyManager.getDeviceId();
new loadDevice().execute(IMEI);
这是我的OnCreate方法的代码片段
以下是AsyncTask类:
//AsyncTask to load get ManifestID from Device
public class loadDevice extends AsyncTask<String, String, Manifests>
{
private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
InputStream inputStream = null;
String theString = "";
StringBuilder builder;
protected void onPreExecute()
{
progressDialog.setMessage("Getting your assigned Manifest...");
progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener()
{
public void onCancel(DialogInterface arg0)
{
loadDevice.this.cancel(true);
}
});
}
@Override
protected Manifests doInBackground(String... arg0)
{
try
{
//http get request
HttpGet request = new HttpGet(CentralURI + "/loadDevice/" + IMEI);
//set the hedear to get the data in JSON format
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient client = new DefaultHttpClient();
//get the response
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
//read content
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
{
builder.append(line);
}
is.close();
theString = builder.toString();
JSONObject manifestJSON = new JSONObject(theString);
JSONArray manifest = manifestJSON.getJSONArray("loadDeviceResult");
for(int i = 1; i < manifest.length(); i++)
{
JSONObject manObj = manifest.getJSONObject(i);
man.ManifestID = manObj.getInt("OriginalSOGManifestID");
man.DeviceManifestID = manObj.getInt("DeviceManifestID");
man.IMEI = manObj.getString("IMEI");
man.JobType = manObj.getString("prefix");
man.RegNo = manObj.getString("RegNo");
man.Complete = manObj.getBoolean("Complete");
man.DateComplete = manObj.getString("DateComplete");
}
}
catch (Exception e)
{
e.printStackTrace();
}
return man;
}
protected void onPostExecute(Manifests manifest)
{
//Manifests manifestToGet = new Manifests();
//String manifestCode = manifestToGet.getJobType() + Integer.toString(manifestToGet.getManifestID());
//new getManifestItems().execute(manifestCode);
}
}
如果您没有授予访问读取电话状态的权限,请将此行添加到
AndroidManifest.xml
(
)。可能是以下两种情况之一:
//ASyncTask to get ManifestItem from each manifest
public class getManifestItems extends AsyncTask<String, String, ArrayList<ManifestItemObj>>
{
private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
InputStream inputStream = null;
String theString = "";
StringBuilder builder;
protected void onPreExecute()
{
progressDialog.setMessage("Loading manifests...");
progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener()
{
public void onCancel(DialogInterface arg0)
{
getManifestItems.this.cancel(true);
}
});
}
@Override
protected ArrayList<ManifestItemObj> doInBackground(String... params)
{
Manifests assign = man;
String manifestCode = assign.getJobType() + Integer.toString(assign.getManifestID());
try
{
//http get request
HttpGet request = new HttpGet(POD_URI + "/getJobs/" + manifestCode);
//set the hedear to get the data in JSON format
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient client = new DefaultHttpClient();
//get the response
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
//read content
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
is.close();
theString = builder.toString();
JSONObject jobsJSON = new JSONObject(theString);
JSONArray jobs = jobsJSON.getJSONArray("getJobsResult");
ManifestItemObj miDumb = new ManifestItemObj();
miDumb.ManifestItemID = -1;
miDumb.FKID = -1;
miDumb.JobType = "--Please Select--";
for(int i = 1; i < jobs.length(); i++)
{
JSONObject mit = jobs.getJSONObject(i);
ManifestItemObj mi = new ManifestItemObj();
mi.ManifestItemID = mit.getInt("ManifestItemID");
mi.JobType = mit.getString("JobType");
mi.FKID = mit.getInt("FKID");
//ShipTo object
JSONObject stObj = mit.getJSONObject("ShipTo");
ShipTo sto = new ShipTo();
sto.ShipToId = stObj.getInt("ShipToId");
sto.ShipToName = stObj.getString("ShipToName");
sto.ShipToAddress1 = stObj.getString("ShipToAddress1");
sto.ShipToAddress2 = stObj.getString("ShipToAddress2");
sto.ShipToCity = stObj.getString("ShipToCity");
sto.ShipToPostcode = stObj.getString("ShipToPCode");
sto.ShipToState = stObj.getString("ShipToState");
mi.shipTo = sto;
jobList.add(mi);
}
jobList.add(0, miDumb);
}
catch (Exception e)
{
e.printStackTrace();
}
return jobList;
}
protected void onPostExecute(ArrayList<ManifestItemObj> mio)
{
ManifestItemAdapter mia = new ManifestItemAdapter(MainActivity.this, android.R.layout.simple_spinner_item, jobList);
this.progressDialog.dismiss();
list_job.setAdapter(mia);
}
}
05-03 14:20:20.603: E/Trace(797): error opening trace file: No such file or directory (2)
05-03 14:20:21.204: D/AndroidRuntime(797): Shutting down VM
05-03 14:20:21.204: W/dalvikvm(797): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
05-03 14:20:21.224: E/AndroidRuntime(797): FATAL EXCEPTION: main
05-03 14:20:21.224: E/AndroidRuntime(797): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.signonglass/com.signonglass.MainActivity}: java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.Spinner
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.os.Looper.loop(Looper.java:137)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread.main(ActivityThread.java:4745)
05-03 14:20:21.224: E/AndroidRuntime(797): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 14:20:21.224: E/AndroidRuntime(797): at java.lang.reflect.Method.invoke(Method.java:511)
05-03 14:20:21.224: E/AndroidRuntime(797): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-03 14:20:21.224: E/AndroidRuntime(797): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-03 14:20:21.224: E/AndroidRuntime(797): at dalvik.system.NativeStart.main(Native Method)
05-03 14:20:21.224: E/AndroidRuntime(797): Caused by: java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.Spinner
05-03 14:20:21.224: E/AndroidRuntime(797): at com.signonglass.MainActivity.onCreate(MainActivity.java:55)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.Activity.performCreate(Activity.java:5008)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
05-03 14:20:21.224: E/AndroidRuntime(797): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
05-03 14:20:21.224: E/AndroidRuntime(797): ... 11 more