package com.pandocloud.freeiot.ui.device; import java.util.HashMap; import java.util.Map; import org.apache.http.Header; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.RadioButton; import com.pandocloud.android.api.AbsOpenApi; import com.pandocloud.freeiot.R; import com.pandocloud.freeiot.api.DevicesApi; import com.pandocloud.freeiot.api.WrapperBaseJsonHttpResponseHandler; import com.pandocloud.freeiot.ui.app.AppConstants; import com.pandocloud.freeiot.ui.app.UserState; import com.pandocloud.freeiot.ui.base.BaseActivity; import com.pandocloud.freeiot.ui.bean.http.BaseResponse; import com.pandocloud.freeiot.ui.login.RegisterActivity; import com.pandocloud.freeiot.utils.ActivityUtils; import com.pandocloud.freeiot.utils.AnalyticsUtils; import com.pandocloud.freeiot.utils.CommonUtils; import com.pandocloud.freeiot.utils.GsonUtils; import com.umeng.analytics.MobclickAgent; public class DeviceAuthActivity extends BaseActivity implements OnClickListener { private String identifier; private EditText mPhoneView; private RadioButton mReadBtn; private RadioButton mReadWriteBtn; public static final int PERMISSION_READ_NOTIFICATION = 1; public static final int PERMISSION_CONTROL = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_device_auth); Bundle bundle = getIntent().getExtras(); if (bundle != null) { identifier = bundle.getString("identifier"); } mPhoneView = (EditText)findViewById(R.id.et_user); mReadBtn = (RadioButton)findViewById(R.id.radio_read_only); mReadWriteBtn = (RadioButton)findViewById(R.id.radio_read_write); findViewById(R.id.back).setOnClickListener(this); findViewById(R.id.btn_ok).setOnClickListener(this); } @Override protected void onResume() { super.onResume(); MobclickAgent.onPageStart(AnalyticsUtils.AnalyticsViewKeys.VIEW_DEVICE_AUTH_ACTIVITY); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPageEnd(AnalyticsUtils.AnalyticsViewKeys.VIEW_DEVICE_AUTH_ACTIVITY); MobclickAgent.onPause(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_ok: deviceAuth(); break; case R.id.back: ActivityUtils.animFinish(DeviceAuthActivity.this, R.anim.slide_in_from_left, R.anim.slide_out_to_right); break; default: break; } } public void deviceAuth() { String userPhone = mPhoneView.getText().toString().trim(); if (TextUtils.isEmpty(userPhone)) { CommonUtils.ToastMsg(this, getString(R.string.error_auth_phone_empty)); return; } if (!userPhone.matches(RegisterActivity.MOBILE_REGX)) { CommonUtils.ToastMsg(this, getString(R.string.error_mobile_format)); return; } int privilege = 1; if (mReadBtn.isChecked()) { privilege = 1; } if (mReadWriteBtn.isChecked()) { privilege = 2; } Map<String, String> hashMap = new HashMap<String, String>(); hashMap.put("auth", privilege == 1 ? "read" : "read write"); MobclickAgent.onEvent(this, AnalyticsUtils.AnalyticsEventKeys.EVENT_DEVICE_AUTH, hashMap); DevicesApi.devicePermissionAuth(DeviceAuthActivity.this, AppConstants.PRODUCT_KEY, UserState.getInstances(this).getAccessToken(""), identifier, userPhone, privilege, new WrapperBaseJsonHttpResponseHandler<BaseResponse>(this) { @Override public void onStart() { CommonUtils.showProgressDialog(DeviceAuthActivity.this, "", ""); } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, BaseResponse errorResponse) { super.onFailure(statusCode, headers, throwable, rawJsonData, errorResponse); } @Override public void onSuccess(int statusCode, Header[] headers, String rawJsonData, BaseResponse response) { if (response.isSuccess()) { setResult(RESULT_OK); CommonUtils.ToastMsg(DeviceAuthActivity.this, R.string.device_auth_success); ActivityUtils.animFinish(DeviceAuthActivity.this, R.anim.slide_in_from_left, R.anim.slide_out_to_right); } else { super.onSuccess(statusCode, headers, rawJsonData, response); } } @Override protected BaseResponse parseResponse2(String rawJsonData, boolean isFailure) throws Throwable { if (!isFailure && !TextUtils.isEmpty(rawJsonData)) { return GsonUtils.getInstance().getGson().fromJson(rawJsonData, BaseResponse.class); } return null; } @Override public void onFinish() { CommonUtils.dismissDialog(); } }); } @Override protected void onDestroy() { super.onDestroy(); AbsOpenApi.cancel(this, true); } }