package com.talk.demo.setting; import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; import android.app.Dialog; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; import br.com.dina.ui.widget.UITableView; import br.com.dina.ui.widget.UITableView.ClickListener; import com.talk.demo.R; import com.talk.demo.account.AccountConstants; import com.talk.demo.account.AppEnterActivity; import java.util.ArrayList; import java.util.List; public class SettingActivity extends Activity { private static String TAG = "SettingActivity"; private UITableView tableView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); tableView = (UITableView) findViewById(R.id.tableView); createList(); Log.d(TAG, "total items: " + tableView.getCount()); tableView.commit(); } private void removeAccount() { AccountManager manager = AccountManager.get(this); Account[] accounts = manager.getAccountsByType(AccountConstants.ACCOUNT_TYPE); for (int index = 0; index < accounts.length; index++) { manager.removeAccount(accounts[index], null, null); } } private void createList() { CustomClickListener listener = new CustomClickListener(); tableView.setClickListener(listener); tableView.addBasicItem("分享", "邀请朋友"); tableView.addBasicItem("关于西窗话", "版本信息"); tableView.addBasicItem("注销"); } private void mySetOnClick(View v, AppInfo info, String argu ) { try{ ComponentName toActivity = new ComponentName(info.getAppPkgName(),info.getAppLauncherClassName()); Intent intent = new Intent(); intent.setComponent(toActivity); intent.setAction("android.intent.action.SEND"); intent.putExtra(Intent.EXTRA_TEXT, argu); SettingActivity.this.startActivity(intent); }catch(Exception e){ Log.v(TAG,"------>"+e.toString()); } } /** * 分享对话框 * * 显示4个排序好的分享app,提示是否安装 * * 需要分享的节目名称 * * @param shareContent */ Dialog dialog; public void showShare_5(final String shareContent) { dialog = new Dialog(this, R.style.Dialog); dialog.setContentView(R.layout.dialog_factory_share); final TextView tv_sina_weibo = (TextView) dialog.findViewById(R.id.tv_sina); final TextView tv_tecent_weibo = (TextView) dialog.findViewById(R.id.tv_QQ_weibo); final TextView tv_message = (TextView) dialog.findViewById(R.id.tv_message); final TextView tv_weixin = (TextView) dialog.findViewById(R.id.tv_weixin); final List<AppInfo> shareAppInfos = getShareAppList(); for (int i = 0; i < shareAppInfos.size(); i++) { if ("com.sina.weibo".equals(shareAppInfos.get(i).getAppPkgName())) { Drawable add = this.getResources().getDrawable(R.drawable.weibo); add.setBounds(0, 0, add.getMinimumWidth(), add.getMinimumHeight()); tv_sina_weibo.setCompoundDrawables(null, add, null, null);// 设置Top图标 tv_sina_weibo.setTag(i); } if ("com.tencent.WBlog".equals(shareAppInfos.get(i).getAppPkgName())) { Drawable add = this.getResources().getDrawable(R.drawable.pyq); add.setBounds(0, 0, add.getMinimumWidth(), add.getMinimumHeight()); tv_tecent_weibo.setCompoundDrawables(null, add, null, null);// 设置Top图标 tv_tecent_weibo.setTag(i); } if ("com.android.mms".equals(shareAppInfos.get(i).getAppPkgName())) { Drawable add = this.getResources().getDrawable(R.drawable.twitter); add.setBounds(0, 0, add.getMinimumWidth(), add.getMinimumHeight()); tv_message.setCompoundDrawables(null, add, null, null);// 设置Top图标 tv_message.setTag(i); } if ("com.tencent.mm".equals(shareAppInfos.get(i).getAppPkgName())) { Drawable add = this.getResources().getDrawable(R.drawable.wx); add.setBounds(0, 0, add.getMinimumWidth(), add.getMinimumHeight()); tv_weixin.setCompoundDrawables(null, add, null, null);// 设置Top图标 tv_weixin.setTag(i); } } // 直接写死4个分享的应用信息 final AppInfo app_sina = new AppInfo("com.sina.weibo", "com.sina.weibo.EditActivity"); final AppInfo app_tx_weibo = new AppInfo("com.tencent.WBlog", "com.tencent.WBlog.intentproxy.TencentWeiboIntent"); final AppInfo app_message = new AppInfo("com.android.mms", "com.android.mms.ui.ComposeMessageActivity"); final AppInfo app_weixin = new AppInfo("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI"); /* final String share = this.getString(R.string.dialog_share1) + shareContent + this.getString(R.string.dialog_share2); */ final String share = shareContent; tv_sina_weibo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mySetOnClick(tv_sina_weibo, app_sina, share); } }); tv_tecent_weibo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mySetOnClick(tv_tecent_weibo, app_tx_weibo, share); } }); tv_message.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mySetOnClick(tv_message, app_message, share); } }); tv_weixin.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mySetOnClick(tv_weixin, app_weixin, share); } }); dialog.show(); } /** * 查询所有支持分享的应用信息 * * @param context * @return */ private List<ResolveInfo> getShareApps(Context context) { List<ResolveInfo> mApps = new ArrayList<ResolveInfo>(); Intent intent = new Intent(Intent.ACTION_SEND, null); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setType("text/plain"); PackageManager pManager = context.getPackageManager(); mApps = pManager.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT); return mApps; } /** * 得到应用列表 * * @return */ private List<AppInfo> getShareAppList() { List<AppInfo> shareAppInfos = new ArrayList<AppInfo>(); PackageManager packageManager = this.getPackageManager(); List<ResolveInfo> resolveInfos = getShareApps(this); if (null == resolveInfos) { return null; } else { for (ResolveInfo resolveInfo : resolveInfos) { AppInfo appInfo = new AppInfo(); appInfo.setAppPkgName(resolveInfo.activityInfo.packageName); appInfo.setAppLauncherClassName(resolveInfo.activityInfo.name); appInfo.setAppName(resolveInfo.loadLabel(packageManager).toString()); appInfo.setAppIcon(resolveInfo.loadIcon(packageManager)); shareAppInfos.add(appInfo); } } return shareAppInfos; } private void callOtherActivity(Class<?> cls) { Intent intent = new Intent(this, cls); startActivity(intent); } private class CustomClickListener implements ClickListener { @Override public void onClick(int index) { Log.d(TAG, "item clicked: " + index); switch(index) { case 0: showShare_5("I like"); break; case 1: callOtherActivity(AboutActivity.class); break; case 2: removeAccount(); callOtherActivity(AppEnterActivity.class); break; } } } @Override public void onResume() { super.onResume(); } }