应用程序无法在4.0.3工作,但它适用于2.3.3(App doesn't work on

2019-10-17 03:06发布

我写一个应用程序,它正常工作在Android 2.3.3,但它并没有在Android 4.0.3工作。

我在AndroidManifest文件中指定minsdk = “10” 和targetsdk = “15”。

我在我的应用程序使用.NET Web服务,我在此页上收到错误。

myspinner = (Spinner) findViewById(R.id.ihtiyacsec);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, SektorList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        myspinner.setAdapter(adapter);

SektorList为空。

我使用kso​​ap2访问我的web服务。

这里是我的功能

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut=request;
        envelope.dotNet = true;     
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;

       try {

       androidHttpTransport.call(SOAP_ACTION, envelope);
       SoapObject response = (SoapObject) envelope.getResponse();
       SektorList = new String[response.getPropertyCount()];

      for(int i=0;i<response.getPropertyCount();i++){          
               SektorList[i] = response.getPropertyAsString(i).toString();     
      }      
} 
        catch (Exception e) {           
            e.printStackTrace();
       }

当我调试项目,androidHttpTransport.call(SOAP_ACTION,信封)不工作,编译器跳转到catch块。

我知道我的SOAP动作是真实的(相同的代码在2.3.3工作)。

我不知道是什么问题?

Answer 1:

那是一个非常普遍的问题。 由于Android的HC +的你不能在你的主UI线程中执行繁重的网络操作。 为了解决这个问题,你可以:从你的清单中删除了“targetsdk”标签(不推荐),或只是使用的AsyncTask为您的网络操作。



Answer 2:

你在主线程中执行(可能慢)的网络操作。 如果你的目标SDK是11(蜂窝)或更高,这将抛出一个NetworkOnMainThreadException在Honeycomb或以上,因为这种行为可以阻止用户界面,并导致无响应的应用。

你可以使用一个的AsyncTask来解决这个问题,在加载数据doInBackground(..)



文章来源: App doesn't work on 4.0.3 but it works on 2.3.3