package org.aisen.weibo.sina.ui.activity.publish; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import org.aisen.android.common.context.GlobalContext; import org.aisen.android.common.utils.Logger; import org.aisen.android.common.utils.SystemUtils; import org.aisen.android.network.http.Params; import org.aisen.android.ui.activity.basic.BaseActivity; import org.aisen.android.ui.fragment.ABaseFragment; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppContext; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.sinasdk.bean.StatusComment; import org.aisen.weibo.sina.sinasdk.bean.StatusContent; import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser; import org.aisen.weibo.sina.support.bean.PublishBean; import org.aisen.weibo.sina.support.bean.PublishType; import org.aisen.weibo.sina.support.utils.ThemeUtils; import org.aisen.weibo.sina.ui.activity.base.AisenActivityHelper; import org.aisen.weibo.sina.ui.fragment.publish.APublishFragment; import org.aisen.weibo.sina.ui.fragment.publish.PublishCommentReplyFragment; import org.aisen.weibo.sina.ui.fragment.publish.PublishStatusCommentFragment; import org.aisen.weibo.sina.ui.fragment.publish.PublishStatusFragment; import org.aisen.weibo.sina.ui.fragment.publish.PublishStatusRepostFragment; /** * 1、发表评论<br/> * 2、回复评论<br/> * 3、转发微博<br/> * 4、发布微博<br/> * 5、提及好友<br/> * 6、意见反馈<br/> * 7、推荐给好友<br/> * * @author wangdan * */ public class PublishActivity extends BaseActivity implements AisenActivityHelper.EnableSwipeback { /** * 发布微博 * * @param from * @param bean */ public static void publishStatus(Activity from, PublishBean bean) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.status.toString()); if (bean != null) intent.putExtra("bean", bean); from.startActivity(intent); } /** * 意见反馈 * * @param from */ public static void publishFeedback(Activity from) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.status.toString()); PublishBean bean = PublishStatusFragment.generateBean(); String model = android.os.Build.MODEL; String sysVersion = android.os.Build.VERSION.RELEASE; String appVersion = SystemUtils.getVersionName(GlobalContext.getInstance()); bean.setText(String.format("#Aisen意见反馈# %s;%s;V%s; @王_dan ", model, sysVersion, appVersion)); bean.setExtras(new Params()); bean.getExtras().addParameter("feedback", "true"); intent.putExtra("bean", bean); from.startActivity(intent); } /** * 提及好友 * * @param from * @param user */ public static void publishStatusWithMention(Activity from, WeiBoUser user) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.status.toString()); PublishBean bean = PublishStatusFragment.generateBean(); bean.setText(String.format("@%s ", user.getScreen_name())); intent.putExtra("bean", bean); from.startActivity(intent); } /** * 回复评论 * * @param from * @param bean * @param comment * @param append */ public static void publishCommentReply(Activity from, PublishBean bean, StatusComment comment, boolean append) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.commentReply.toString()); if (bean == null) bean = PublishCommentReplyFragment.generateBean(comment); if (append) { if (bean.getExtras() == null) bean.setExtras(new Params()); bean.getExtras().addParameter("append", String.format("//@%s:%s", comment.getUser().getScreen_name(), comment.getText())); } intent.putExtra("bean", bean); from.startActivity(intent); } /** * 回复微博 * * @param from * @param bean * @param content */ public static void publishStatusComment(Activity from, PublishBean bean, StatusContent content) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.commentCreate.toString()); if (bean == null) bean = PublishStatusCommentFragment.generateBean(content); intent.putExtra("bean", bean); from.startActivity(intent); } /** * 转发微博 * * @param from * @param bean * @param content */ public static void publishStatusRepost(Activity from, PublishBean bean, StatusContent content) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.statusRepost.toString()); if (bean == null) bean = PublishStatusRepostFragment.generateBean(content); intent.putExtra("bean", bean); from.startActivity(intent); } /** * 围观 * * @param from * @param bean * @param content */ public static void publishStatusRepostAndWeiguan(Activity from, PublishBean bean, StatusContent content) { Intent intent = new Intent(from, PublishActivity.class); intent.putExtra("type", PublishType.statusRepost.toString()); if (bean == null) bean = PublishStatusRepostFragment.generateBean(content); if (bean.getExtras() == null) bean.setExtras(new Params()); bean.getExtras().addParameter("weiguan", "true"); intent.putExtra("bean", bean); from.startActivity(intent); } private String typeStr; private PublishBean bean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.comm_ui_fragment_container); getSupportActionBar().setDisplayShowHomeEnabled(false); // 接收分享 if (savedInstanceState == null) { Intent intent = getIntent(); String action = intent.getAction(); String type = intent.getType(); if (!TextUtils.isEmpty(action)) { if (action.equals(Intent.ACTION_SEND) && !TextUtils.isEmpty(type)) { if (!AppContext.isLoggedIn()) { // AccountFragment.launch(this); showMessage(R.string.publish_please_login); finish(); return; } if ("text/plain".equals(type)) { handleSendText(intent); } else if (type.startsWith("image/")) { handleSendImage(intent); } else { finish(); } return; } } } typeStr = savedInstanceState == null ? getIntent().getStringExtra("type") : savedInstanceState.getString("type"); bean = savedInstanceState == null ? (PublishBean) getIntent().getSerializableExtra("bean") : (PublishBean) savedInstanceState.getSerializable("bean"); if (savedInstanceState == null) { if (TextUtils.isEmpty(typeStr)) { finish(); return; } PublishType type = PublishType.valueOf(typeStr); ABaseFragment fragment = null; switch (type) { case status: fragment = PublishStatusFragment.newInstance(bean); break; case commentReply: fragment = PublishCommentReplyFragment.newInstance(bean); break; case commentCreate: fragment = PublishStatusCommentFragment.newInstance(bean); break; case statusRepost: fragment = PublishStatusRepostFragment.newInstance(bean); break; default: break; } if (fragment != null) getFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, "PublishFragment").commit(); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("type", typeStr); outState.putSerializable("bean", bean); } private void handleSendText(Intent intent) { String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); Logger.v(APublishFragment.TAG, String.format("分享内容, TEXT = %s", sharedText + "")); if (!TextUtils.isEmpty(sharedText)) { PublishBean bean = PublishStatusFragment.generateBean(); bean.setText(sharedText); bean.setExtras(new Params()); bean.getExtras().addParameter("share", "true"); getFragmentManager().beginTransaction() .add(R.id.fragmentContainer, PublishStatusFragment.newInstance(bean), "PublishFragment").commit(); } } private void handleSendImage(Intent intent) { Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); Logger.v(APublishFragment.TAG, String.format("分享内容, TEXT = %s", sharedText + "")); String imageURL = intent.getStringExtra("imageURL"); Logger.v(APublishFragment.TAG, String.format("分享图片, URL = %s", imageURL + "")); if (imageUri != null) { PublishBean bean = PublishStatusFragment.generateBean(); if (TextUtils.isEmpty(sharedText)) { // bean.setText(getString(R.string.publish_share_pic)); bean.setText(""); } else { bean.setText(sharedText); } bean.setParams(new Params()); bean.setExtras(new Params()); bean.getExtras().addParameter("share", "true"); bean.setPics(new String[]{ imageUri.toString() }); bean.getExtras().addParameter("images", imageUri.toString()); if (!TextUtils.isEmpty(imageURL)) { bean.getExtras().addParameter("shareImage", "true"); bean.getParams().addParameter("url", imageURL); } getFragmentManager().beginTransaction() .add(R.id.fragmentContainer, PublishStatusFragment.newInstance(bean), "PublishFragment").commit(); } } @Override protected int configTheme() { return ThemeUtils.themeArr[AppSettings.getThemeColor()][0]; } @Override public boolean canSwipe() { return false; } }