2011-11-24 4 views
1

내 요구를 시작하는 방법입니다 :안드로이드 서비스 : 서비스를

내가 service.Normal 업로드가 ALOS 미세 (일반 업로드는 로그인 후 의미 작업 한 MS SQL server.I에 SQLite는 테이블 레코드를 업로드하려면, 그것은 업로드 테이블 정보의 목록을 표시합니다. 사용자가 업로드 버튼을 클릭하면 & 업로드 다음 화면으로 이동). 이제 나는 이것을하고 싶다. 판매 담당자가 청구서/지불 저장 후 나머지 코드에 영향을 미치지 않고 백엔드 SQL 서버에 & 업로드 데이터를 업로드한다. 여기

public class UploadService extends Service { 
    private static final String TAG = "UploadService"; 
    public static final String APPURL = "http://192.168.1.213:7986/XontService"; 
    private static final String NAMESPACE = "http://tempuri.org/"; 
    private static final String METHOD_NAME = "convertJSONToDataSet"; 
    private static String SOAP_ACTION = "http://tempuri.org/IXontService/convertJSONToDataSet"; 
    ArrayList<String> uploadFiler = new ArrayList<String>(); 
    HashMap<Integer,String> uploadTable = new HashMap<Integer, String>(); 

    @Override 
    public IBinder onBind(Intent arg0) { 
    return null; 
    } 

    @Override 
    public void onCreate() { 
    Toast.makeText(this, "Upload Service Created", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onCreate"); 
    uploadUsingService(); 

    } 

    @Override 
    public void onDestroy() { 
    Toast.makeText(this, "Upload Service Stopped", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onDestroy"); 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
    Toast.makeText(this, "Upload Service Started", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onStart"); 

    } 


    public void uploadUsingService(){ 
    uploadTable = getUploadTable(); 
    if(uploadTable.size() > 0){ 
     for (Map.Entry<Integer, String> entry : uploadTable.entrySet()) { 
     System.out.println("----key" + entry.getKey()); 
     String value = entry.getValue(); 

     if(value.equals("WMInvoiceHeader")){ 
      getInvoiceHeader(); 
     } 
     } 
    } 
    } 

    public void getInvoiceHeader(){ 
    boolean serviceStatus =true; 
    DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this); 
    // dbAdapter.openDataBase(); 

    SharedPreferences myPrefs = this.getSharedPreferences("myLogedPrefs",MODE_PRIVATE); 
     String strBusinessUnit = myPrefs.getString("BusinessUnit", ""); 
     String strExecutive = myPrefs.getString("Executive", ""); 

     try{ 
     StringBuffer invoiceHeader = new StringBuffer(); 
     JSONArray jaHeader = new JSONArray(); 
     String query = "SELECT BusinessUnit,ExecutiveCode,InvoiceNo,SalesCategory,RetailerCode," +//4 
       " RetailerCodeSon,InvoiceDate,GrossValue,InvoiceValue,TotalLineDiscount," + //9 
       " TotalHeaderDiscount,VATValue,UpdatedOn,UpdatedBy,UploadFlag,VisitNumber ," + //15 
       " VisitSequence,RouteCode,SalesType,ActiveStatus,UploadedOn,UploadedBy,UploadedMethod," + 
       " UploadedType,RetailerType,HeaderDiscountFlag,SpecialDiscountFlag,TXNReference,TourReference" + 
       " FROM WMInvoiceHeader " + 
       " WHERE (CancelFlag IS NULL OR CancelFlag ='0')"; 
     ArrayList<?> stringList = dbAdapter.selectRecordsFromDBList(query, null); 
     if(stringList.size() > 0){ 
     invoiceHeader.append("{\"WMInvoiceHeader\":"); 
      for (int i = 0; i < stringList.size(); i++) { 
      ArrayList<?> arrayList = (ArrayList<?>) stringList.get(i); 
      ArrayList<?> list = arrayList; 
      JSONObject invHeader = new JSONObject(); 
      invHeader.put("BusinessUnit",(String)list.get(0)); 
      invHeader.put("ExecutiveCode",(String)list.get(1)); 
      invHeader.put("InvoiceDate",(String)list.get(6)); 
      invHeader.put("VisitSequence",(String)list.get(16)); 
      invHeader.put("RouteCode",(String)list.get(17)); 
      invHeader.put("SalesType",(String)list.get(18));   
      jaHeader.put(invHeader); 
      } 
     } 
     invoiceHeader.append(jaHeader.toString()); 
     invoiceHeader.append("}"); 
     serviceStatus = soapPrimitiveData("WMInvoiceHeader", strBusinessUnit, strExecutive, invoiceHeader.toString()); 

     }catch (IOException e) { 
     serviceStatus =false; 
     e.printStackTrace(); 
     } catch (XmlPullParserException e) { 
     serviceStatus =false; 
     e.printStackTrace(); 
     }catch (Exception e) { 
     serviceStatus =false; 
     e.printStackTrace(); 
     }finally{ 
     if(!serviceStatus){ 
      uploadFiler.add("WMInvoiceHeader"); 
     } 
     } 


    } 

    public boolean soapPrimitiveData(String tablename,String strBusinessUnit, String strExecutive,String jsonString) throws IOException,XmlPullParserException { 
    SoapPrimitive responsesData = null; 
    boolean status =false; 
    SoapObject requestData = new SoapObject(NAMESPACE, METHOD_NAME); // set 
    requestData.addProperty("strBusinessUnit", strBusinessUnit); 
    requestData.addProperty("strExecutiveCode", strExecutive); 
    requestData.addProperty("strTableName", tablename); 
    requestData.addProperty("jsonContent", jsonString); 
    SoapSerializationEnvelope envelopes = new SoapSerializationEnvelope(SoapEnvelope.VER11); // put all required data into a soap//// envelope 
    envelopes.dotNet = true; 
    envelopes.setOutputSoapObject(requestData); 
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(APPURL); 
    httpTransport.debug = true; 
    try { 
     httpTransport.call(SOAP_ACTION, envelopes); 
     responsesData = (SoapPrimitive) envelopes.getResponse(); 
     if((responsesData.toString()).equals("true")){ 
     DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(UploadService.this); 
     status = dbAdapter.updateUploadedTable(tablename, strExecutive, strBusinessUnit); 
     } 


    } catch (SocketException ex) { 
     status = false; 
     Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage()); 
     ex.printStackTrace(); 
    } catch (Exception e) { 
     status = false; 
     Log.e("Error : " , "Error on soapPrimitiveData() " + e.getMessage()); 
     e.printStackTrace(); 
     } 
    return status; 
    } 


    public HashMap<Integer,String> getUploadTable(){ 
    DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(this); 
     dbAdapter.openDataBase(); 

     SharedPreferences myPrefs = this.getSharedPreferences("myLogedPrefs",MODE_PRIVATE); 
    String strBusinessUnit = myPrefs.getString("BusinessUnit", ""); 
    String strExecutive = myPrefs.getString("Executive", ""); 


     HashMap<Integer,String> uploadTableMap = new HashMap<Integer,String>(); 
     try { 
     String query = "SELECT TableName FROM WMPalmUploadControl WHERE Upload = '1' AND BusinessUnit =? AND ExecutiveCode = ?;"; 
     String[] d = new String[]{strBusinessUnit,strExecutive}; 
     ArrayList<?> stringList = dbAdapter.selectRecordsFromDBList(query, d); 
     if(stringList.size() > 0){ 
      for (int i = 0; i < stringList.size(); i++) { 
      ArrayList<?> arrayList = (ArrayList<?>) stringList.get(i); 
      ArrayList<?> list = arrayList; 
      uploadTableMap.put(i, (String)list.get(0)); 
      } 

     } 
     dbAdapter.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return uploadTableMap; 
    } 

} 

을 나는 onStart()에서 uploadUsingService() 메소드를 호출 할 :

나는 다음과 같이했다.

이 내 호출하는 코드입니다 : 내가 message 업로드 서비스 . ' ONSTART()`토스트 메시지가 표시되지 만든이 onCreate()' method 토스트를 가지고 : 나는이 코드를 실행

if(is3g ||isWifi){ 
      startService(new Intent(this, UploadService.class)); 
    }else if (networkType == TelephonyManager.NETWORK_TYPE_GPRS) { 
      if(signalStrengthInt > 10){ ....} 

    } 

. 내가 어떻게 부를 수 있니? 이 부분에서이 부분을했습니다. Link

누구든지 나를이 문제에서 도와 주시겠습니까?

답변

관련 문제