package cn.koolcloud.ipos.appstore.service;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.os.StrictMode;
import cn.koolcloud.ipos.appstore.AppStorePreference;
import cn.koolcloud.ipos.appstore.R;
import cn.koolcloud.ipos.appstore.api.ApiService;
import cn.koolcloud.ipos.appstore.constant.Constants;
import cn.koolcloud.ipos.appstore.entity.App;
import cn.koolcloud.ipos.appstore.service.aidl.ParcelableApp;
import cn.koolcloud.ipos.appstore.ui.SoftwareDetailActivity;
import cn.koolcloud.ipos.appstore.utils.JsonUtils;
import cn.koolcloud.ipos.appstore.utils.Logger;
import cn.koolcloud.ipos.appstore.utils.ToastUtil;
import cn.koolcloud.ipos.appstore.service.aidl.IMSCService;
import cn.koolcloud.ipos.appstore.service.aidl.IMSCService.Stub;
public class MSCService extends Service {
private static final String TAG = "MSCService";
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
Logger.d("onBind()");
return new ImplMSCService(); //return service instance.
}
@Override
public void onCreate() {
Logger.d("onCreate()");
super.onCreate();
}
@Override
public void onDestroy() {
Logger.d("onDestroy()");
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
Logger.d("onStart()");
super.onStart(intent, startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Logger.d("onStartCommand()");
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onUnbind(Intent intent) {
Logger.d("onUnbind()");
return super.onUnbind(intent);
}
public class ImplMSCService extends IMSCService.Stub {
@Override
public ParcelableApp checkUpdate(String packageName, int versionCode) throws RemoteException {
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
String terminalId = AppStorePreference.getTerminalID(getApplicationContext());
JSONObject appObj = ApiService.checkSoftUpdate(terminalId, packageName, versionCode);
ParcelableApp app = JsonUtils.parseJSONParcelApp(appObj);
return app;
}
@Override
public void openAppDetail(ParcelableApp app) throws RemoteException {
if (app != null) {
Logger.d("appName:" + app.getName());
List<App> list = new ArrayList<App>();
App normalApp = new App();
normalApp.setId(app.getId());
normalApp.setName(app.getName());
normalApp.setDate(app.getDate());
normalApp.setDownloadId(app.getDownloadId());
normalApp.setIcon(app.getIcon());
normalApp.setPackageName(app.getPackageName());
normalApp.setRating(app.getRating());
normalApp.setSize(app.getSize());
normalApp.setVendor(app.getVender());
normalApp.setVersion(app.getVersion());
normalApp.setVersionCode(app.getVersionCode());
list.add(normalApp);
Intent mIntent = new Intent(getApplicationContext(), SoftwareDetailActivity.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Bundle mBundle = new Bundle();
mBundle.putSerializable(Constants.SER_KEY, (Serializable) list);
mBundle.putInt(Constants.APP_LIST_POSITION, 0);
mIntent.putExtras(mBundle);
startActivity(mIntent);
} else {
Looper.prepare();
ToastUtil.showToast(getApplicationContext(), R.string.msg_argument_error);
Looper.loop();
Looper.getMainLooper().quit();
}
}
}
}