package com.android.caigang.view; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ListActivity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.android.caigang.R; import com.android.caigang.db.DataHelper; import com.android.caigang.model.UserInfo; import com.android.caigang.util.DataBaseContext; import com.android.caigang.util.ImageUtil; import com.android.caigang.util.WeiboContext; import com.mime.qweibo.examples.MyWeiboSync; public class AccountActivity extends ListActivity implements OnItemClickListener,OnItemLongClickListener,OnClickListener{ private final static String TAG="AccountActivity"; private DataHelper dataHelper; private MyWeiboSync weibo; private List<UserInfo> userList; private ListView listView; private ImageView user_default_headicon; private LinearLayout account_add_btn_bar; private UserInfo currentUser; private UserAdapater adapater; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.account); setUpViews();//����view setUpListeners();//����listenter registerReceiver(broadcastReceiver, new IntentFilter("com.weibo.caigang.getverifier"));//ע���õ���֤��㲥������. dataHelper = DataBaseContext.getInstance(getApplicationContext());//��ȡ���ݿ������࣬���˵�������֤ȫ��ֻ��һ���˶��� userList = dataHelper.GetUserList(false); SharedPreferences preferences = getSharedPreferences("default_user",Activity.MODE_PRIVATE); String nick = preferences.getString("user_default_nick", "");//ȡ��΢��Ĭ�ϵ�¼�˺���Ϣ UserInfo user = null; if(userList!=null&&userList.size()>0){ if (nick != "") { user = dataHelper.getUserByName(nick,userList);//ȡ��΢��Ĭ�ϵ�¼�˺���Ϣ } if(user == null) { user = userList.get(0); } } if(user!=null){ user_default_headicon.setImageDrawable(user.getUserIcon()); } if(userList!=null&&userList.size()>0){ adapater = new UserAdapater(); listView.setAdapter(adapater); listView.setOnItemClickListener(this); } } private void setUpViews(){ listView = getListView(); user_default_headicon = (ImageView)findViewById(R.id.user_default_headicon); account_add_btn_bar = (LinearLayout)findViewById(R.id.account_add_btn_bar); } private void setUpListeners(){ user_default_headicon.setOnClickListener(this); account_add_btn_bar.setOnClickListener(this); listView.setOnItemLongClickListener(this); } public class UserAdapater extends BaseAdapter{ @Override public int getCount() { return userList.size(); } @Override public Object getItem(int position) { return userList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.account_list_item, null); ImageView user_headicon = (ImageView) convertView.findViewById(R.id.user_headicon); TextView user_nick = (TextView) convertView.findViewById(R.id.user_nick); TextView user_name = (TextView) convertView.findViewById(R.id.user_name); UserInfo user = userList.get(position); try { user_headicon.setImageDrawable(user.getUserIcon()); user_nick.setText(user.getUserName()); user_name.setText("@"+user.getUserId()); } catch (Exception e) { e.printStackTrace(); } return convertView; } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { currentUser = userList.get(position); user_default_headicon.setImageDrawable(currentUser.getUserIcon()); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.account_add_btn_bar: { weibo = WeiboContext.getInstance();//��������֤����Ӧ��ֻ��һ��weibo���� weibo.getRequestToken(); Intent intent = new Intent(AccountActivity.this,AuthorizeActivity.class); Bundle bundle = new Bundle(); bundle.putString("url", weibo.getAuthorizeUrl()); intent.putExtras(bundle); startActivity(intent);//��ת����Ѷ��΢����Ȩҳ��,ʹ��webview����ʾ } break; case R.id.user_default_headicon: { SharedPreferences preferences = getSharedPreferences("default_user", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("user_default_nick", currentUser.getUserName()); editor.putString("user_default_name", currentUser.getUserId()); editor.commit(); Intent intent = new Intent(AccountActivity.this, MainActivity.class); startActivity(intent); } break; default: break; } } BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("com.weibo.caigang.getverifier")){ weibo = WeiboContext.getInstance(); Bundle bundle = intent.getExtras(); String veryfier = bundle.getString("veryfier");//��ȡ����Ȩҳ�淵�ص�veryfier if(veryfier!=null){ //unregisterReceiver(broadcastReceiver); weibo.getAccessToken(weibo.getTokenKey(), weibo.getTokenSecrect(), veryfier);//ȡ��key��secret,���key��secret�dz���Ҫ������Ѷ��APIȫ�����ˣ��������˵ģ��������Ķ�һ���ģ����������е�������Ѷ��OAuth��֤�ǻ���1.0�� String userInfo = weibo.getUserInfo(weibo.getAccessTokenKey(), weibo.getAccessTokenSecrect()); try { JSONObject data = new JSONObject(userInfo).getJSONObject("data"); String headUrl = null; if(data.getString("head")!=null&&!"".equals(data.getString("head"))){ headUrl = data.getString("head")+"/100"; } String userId = data.getString("name"); String userName = data.getString("nick"); UserInfo user = new UserInfo();//����һ��user���󱣴浽���ݿ� user.setUserId(userId); user.setUserName(userName); user.setToken(weibo.getAccessTokenKey()); user.setTokenSecret(weibo.getAccessTokenSecrect()); Long insertId = 0L; if (dataHelper.HaveUserInfo(userId)){//���ݿ��Ѿ������˴��û� dataHelper.UpdateUserInfo(userName, ImageUtil.getRoundBitmapFromUrl(headUrl, 15), userId); //Toast.makeText(AccountActivity.this, "���û��Ѵ���,������û�������ͷ���Ѿ��ı䣬��ô�˲�����ͬ������!", Toast.LENGTH_LONG).show(); }else{ if(headUrl!=null){ insertId = dataHelper.SaveUserInfo(user,ImageUtil.getBytesFromUrl(headUrl)); }else{ insertId = dataHelper.SaveUserInfo(user,null); } } if(insertId>0L){ //Toast.makeText(AccountActivity.this, "�Ѿ���Ȩ�ɹ�,����ת��ѡ��Ĭ�ϵĵ�¼�û�����!", Toast.LENGTH_LONG).show(); } Log.d(TAG+"�������ݿ��id��", insertId.toString()); userList = dataHelper.GetUserList(false); adapater = new UserAdapater(); adapater.notifyDataSetChanged();//ˢ��listview listView.setAdapter(adapater); listView.setOnItemClickListener(AccountActivity.this); SharedPreferences preferences = getSharedPreferences("default_user",Activity.MODE_PRIVATE); String nick = preferences.getString("user_default_nick", "");//ȡ��΢��Ĭ�ϵ�¼�˺���Ϣ UserInfo defauUserInfo = null; if(userList!=null&&userList.size()>0){ if (nick != "") { defauUserInfo = dataHelper.getUserByName(nick,userList);//ȡ��΢��Ĭ�ϵ�¼�˺���Ϣ } if(defauUserInfo == null) { defauUserInfo = userList.get(0); } } if(defauUserInfo!=null){ currentUser = defauUserInfo; user_default_headicon.setImageDrawable(defauUserInfo.getUserIcon()); } } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } Log.e(TAG, userInfo); } Log.e(TAG, veryfier); } } }; @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int position, long arg3) { CharSequence [] items = null; items= new CharSequence[]{"ɾ���˺�","ȡ��"}; new AlertDialog.Builder(AccountActivity.this).setTitle("ѡ��").setItems(items,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: { String userId = userList.get(position).getUserId(); dataHelper.DelUserInfo(userId);//ɾ�����ݿ��¼ SharedPreferences preferences = getSharedPreferences("default_user", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); if(preferences.getString("user_default_name", "").equals(userId)){ editor.putString("user_default_nick", ""); editor.putString("user_default_name", ""); editor.commit();//������汣��ļ�¼SharedPreferences } userList = dataHelper.GetUserList(false); adapater = new UserAdapater(); adapater.notifyDataSetChanged();//ˢ��listview listView.setAdapter(adapater); } break; case 1: { } break; default: break; } } }).show(); return false; } }