Android 使用IMEI作为JSON服务的参数

Android 使用IMEI作为JSON服务的参数,android,json,android-asynctask,imei,Android,Json,Android Asynctask,Imei,完成这项任务后,我又遇到了一次路障。使用JSON(它连接到本地SQLServer,我想使用IMEI作为字符串参数检索对象。我为AsyncTask调用设置了一个断点,它只是崩溃了,甚至没有遍历。每个移动设备的IMEI都存储在我的数据库中 我实现以下AsyncTask的目的是希望在我的设备上运行它,而不是在模拟器上 我怀疑这可能与我的设备有关,因为我的两个web服务都在我的PC上运行。我还更改了APN设置中的代理和端口,使其与我的服务的URI一致,但它仍然没有响应 TelephonyManager

完成这项任务后,我又遇到了一次路障。使用JSON(它连接到本地SQLServer,我想使用IMEI作为字符串参数检索对象。我为AsyncTask调用设置了一个断点,它只是崩溃了,甚至没有遍历。每个移动设备的IMEI都存储在我的数据库中

我实现以下AsyncTask的目的是希望在我的设备上运行它,而不是在模拟器上

我怀疑这可能与我的设备有关,因为我的两个web服务都在我的PC上运行。我还更改了APN设置中的代理和端口,使其与我的服务的URI一致,但它仍然没有响应

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
)。

可能是以下两种情况之一:

  • 添加对清单的权限
    (在“我已经解决了这个问题,在重新排列了代码之后。我已经删除了按钮,因为它不是必需的。

    不要让我们猜测…发布你的日志猫!发布你的androidmanifest代码日志猫在你的MainActivity类的第55行显示了一个错误的模式。你能告诉我们第55行是什么吗?我的MainActivity中的第55行:setContentView(右布局主视图);我的第一个想法是权限,但logcat输出清楚地显示了错误的强制转换,因此您的猜测#2可能是正确的。那么,这是否意味着我可以在loadDevice AsyncTask类中实现OnItemSelectedListener,因为我需要它来加载带有所有项的微调器。本质上,loadDevice获得一个清单对象,然后传递其名称进入getManifests任务以填充微调器。
    //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