내 요구를 시작하는 방법입니다 :안드로이드 서비스 : 서비스를
내가 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
누구든지 나를이 문제에서 도와 주시겠습니까?
이 정보를 제공해 주셔서 감사합니다 .... – Piraba