微博API只能出来登陆界面但是发微博界面出不来

Android 码拜 10年前 (2015-04-26) 1095次浏览 0个评论

我想要在软件里面加个按钮点击一下可以发微博,但是从微博API的DEMO拷了代码过来不知道为什么点了之后可以出来登陆界面,但是登陆后不会转到发微博的界面,登陆后再点按钮就没有反应了LOGCAT也没半点信息出来ORZ

代码如下

public class ContrastActivity extends Activity implements OnClickListener,
		IWeiboHandler.Response {

	private static final String TAG = "ContrastActivity";

	public static final String KEY_SHARE_TYPE = "key_share_type";
	public static final int SHARE_CLIENT = 1;
	public static final int SHARE_ALL_IN_ONE = 2;
	// private Button mSharedBtn;

	private LinearLayout mSharedBtn;
	private IWeiboShareAPI mWeiboShareAPI = null;

	private int mShareType = SHARE_CLIENT;
 protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.con_activity);

		initViews();


		mShareType = getIntent().getIntExtra(KEY_SHARE_TYPE, SHARE_CLIENT);

		mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);

		mWeiboShareAPI.registerApp();

		if (savedInstanceState != null) {
			mWeiboShareAPI.handleWeiboResponse(getIntent(), this);
		}

	}

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);

		mWeiboShareAPI.handleWeiboResponse(intent, this);
	}

	@Override
	public void onResponse(BaseResponse baseResp) {
		switch (baseResp.errCode) {
		case WBConstants.ErrorCode.ERR_OK:
			Toast.makeText(this, R.string.weibosdk_demo_toast_share_success,
					Toast.LENGTH_LONG).show();
			break;
		case WBConstants.ErrorCode.ERR_CANCEL:
			Toast.makeText(this, R.string.weibosdk_demo_toast_share_canceled,
					Toast.LENGTH_LONG).show();
			break;
		case WBConstants.ErrorCode.ERR_FAIL:
			Toast.makeText(
					this,
					getString(R.string.weibosdk_demo_toast_share_failed)
							+ "Error Message: " + baseResp.errMsg,
					Toast.LENGTH_LONG).show();
			break;
		}
	}

	private void initViews() {

		mSharedBtn = (LinearLayout) findViewById(R.id.share_weibo);
		mSharedBtn.setOnClickListener(this);
	}





	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.share_weibo:
			sendMessage();
			break;
		default:
			break;
		}
	}

	private void sendMessage() {

		if (mShareType == SHARE_CLIENT) {
			if (mWeiboShareAPI.isWeiboAppSupportAPI()) {
				int supportApi = mWeiboShareAPI.getWeiboAppSupportAPI();
				if (supportApi >= 10351 /* ApiUtils.BUILD_INT_VER_2_2 */) {
					Log.v("tag", "mil1");
					sendMultiMessage();
				} else {
					Log.v("tag", "sing");
					sendSingleMessage();
				}
			} else {
				Toast.makeText(this,
						R.string.weibosdk_demo_not_support_api_hint,
						Toast.LENGTH_SHORT).show();
			}
		} else if (mShareType == SHARE_ALL_IN_ONE) {
			Log.v("tag", "mil2");
			sendMultiMessage();
		}
	}

	private void sendSingleMessage() {

		// 1. 初始化微博的分享消息
		// 用户可以分享文本、图片、网页、音乐、视频中的一种
		WeiboMessage weiboMessage = new WeiboMessage();
		weiboMessage.mediaObject = getTextObj();

		// 2. 初始化从第三方到微博的消息请求
		SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
		// 用transaction唯一标识一个请求
		request.transaction = String.valueOf(System.currentTimeMillis());
		request.message = weiboMessage;

		// 3. 发送请求消息到微博,唤起微博分享界面
		mWeiboShareAPI.sendRequest(ContrastActivity.this, request);
	}

	private void sendMultiMessage() {

		WeiboMultiMessage weiboMessage = new WeiboMultiMessage();

		weiboMessage.textObject = getTextObj();

		SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
		request.transaction = String.valueOf(System.currentTimeMillis());
		request.multiMessage = weiboMessage;

		if (mShareType == SHARE_CLIENT) {
			Log.v("tag", "唤起1");
            mWeiboShareAPI.sendRequest(ContrastActivity.this, request);
        }
        else if (mShareType == SHARE_ALL_IN_ONE) {
            AuthInfo authInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
            Oauth2AccessToken accessToken = AccessTokenKeeper.readAccessToken(getApplicationContext());
            String token = "";
            if (accessToken != null) {
                token = accessToken.getToken();
            }
            Log.v("tag", "唤起2");
            mWeiboShareAPI.sendRequest(this, request, authInfo, token, new WeiboAuthListener() {
                
                @Override
                public void onWeiboException( WeiboException arg0 ) {
                }
                
                @Override
                public void onComplete( Bundle bundle ) {
                    // TODO Auto-generated method stub
                    Oauth2AccessToken newToken = Oauth2AccessToken.parseAccessToken(bundle);
                    AccessTokenKeeper.writeAccessToken(getApplicationContext(), newToken);
                    Toast.makeText(getApplicationContext(), "onAuthorizeComplete token = " + newToken.getToken(), 0).show();
                }
                
                @Override
                public void onCancel() {
                }
            });
        }
    }

	private String getSharedText() {
		int formatId = R.string.weibosdk_demo_share_text_template;
		String format = getString(formatId);
		String text = format;

		format = getString(R.string.weibosdk_demo_share_text_template);

		return text;
	}

	private TextObject getTextObj() {
		TextObject textObject = new TextObject();
		textObject.text = getSharedText();
		return textObject;
	}
}

DEMO的代码如下,因为我只要能发文字就可以了所以把其他的都删了,代码贴上去超帖子字数了弄个网盘…
http://pan.baidu.com/s/1bn3zW43

微博API只能出来登陆界面但是发微博界面出不来
100分
都没人回答吗

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明微博API只能出来登陆界面但是发微博界面出不来
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!