android程序如果要分享到微博之类的社交平台,一般有两种选择,第一种是进入各个平台的开发网站,下载并整合该平台的API,这种比较繁琐,一般都有种种限制,而且API提供的接口我们往往只用很少的几个。第二种是使用大公司二次整合的API,这里备份下友盟社会化分享组件的基本使用。
github:
【 https://github.com/cstriker1407/android/tree/master/HelloWeibo 】
CONTENTS
1)下载开发文档和注册账号,获取KEY
友盟社会化组件开发文档【 http://dev.umeng.com/social/android/share/specific-integration 】
友盟的开发文档还是比较全的。
KEY:
2)将指定的res和libs拷入
按照要求将指定的res和libs拷入工程。
3)修改AndroidManifestx.xml文件,添加相关权限
<!-- ###################声明SDK使用的相关权限###################### -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 检测网络状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取mac地址作为用户的备用唯一标识 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 获取用户手机的IMEI,用来唯一的标识用户。 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 缓存资源优先存入SDcard -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于评论模块分享位置信息 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于评论模块分享位置信息 -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="yeah.cstriker1407.android.share.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- ###################注册SDK使用的Activity###################### -->
<!-- 分享编辑页 -->
<activity
android:name="com.umeng.socialize.view.ShareActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@style/Theme.UMDialog"
android:windowSoftInputMode="stateVisible|adjustResize" >
</activity>
<!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->
<activity android:name="com.tencent.tauth.AuthActivity" />
<!-- ###################添加UmengAppkey###################### -->
<meta-data
android:name="UMENG_APPKEY"
android:value="XXXX" >
</meta-data>
</application>
4)页面和代码
activity_main.xml
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择发送平台" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改后发送新浪微博" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="直接发送新浪微博" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="本地是否认证" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除本地认证" />
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="新浪认证" />
<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android默认" />
MainActivity.java
public class MainActivity extends Activity implements OnClickListener {
private EditText editText;
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private Button button5;
private Button button6;
private Button button7;
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share",
RequestType.SOCIAL);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
button1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
button3 = (Button)findViewById(R.id.button3);
button4 = (Button)findViewById(R.id.button4);
button5 = (Button)findViewById(R.id.button5);
button6 = (Button)findViewById(R.id.button6);
button7 = (Button)findViewById(R.id.button7);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
button6.setOnClickListener(this);
button7.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.button1:
{
// 设置分享内容
mController.setShareContent(editText.getText().toString());
// 设置分享图片, 参数2为图片的地址
mController.setShareMedia(new UMImage(this,"http://www.umeng.com/images/pic/banner_module_social.png"));
//设置分享图片,参数2为本地图片的资源引用
//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));
//设置分享图片,参数2为本地图片的路径(绝对路径)
//mController.setShareMedia(new UMImage(getActivity(),
// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));
// 设置分享平台选择面板的平台显示顺序
// mController.getConfig().setPlatformOrder(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,
// SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);
// 打开平台选择面板,参数2为打开分享面板时是否强制登录,false为不强制登录
mController.openShare(this, false);
break;
}
case R.id.button2:
{
// 设置分享内容
mController.setShareContent(editText.getText().toString());
mController.postShare(MainActivity.this,SHARE_MEDIA.SINA,
new SnsPostListener() {
@Override
public void onStart() {
Toast.makeText(MainActivity.this, "开始分享.", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
if (eCode == 200) {
Toast.makeText(MainActivity.this, "分享成功.", Toast.LENGTH_SHORT).show();
} else {
String eMsg = "";
if (eCode == -101){
eMsg = "没有授权";
}
Toast.makeText(MainActivity.this, "分享失败[" + eCode + "] " +
eMsg,Toast.LENGTH_SHORT).show();
}
}
});
break;
}
case R.id.button3:
{
// 设置分享内容
mController.setShareContent(editText.getText().toString());
mController.directShare(MainActivity.this, SHARE_MEDIA.SINA,
new SnsPostListener() {
@Override
public void onStart() {
Toast.makeText(MainActivity.this, "分享开始",Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
if(eCode == StatusCode.ST_CODE_SUCCESSED){
Toast.makeText(MainActivity.this, "分享成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "分享失败",Toast.LENGTH_SHORT).show();
}
}
});
break;
}
case R.id.button4:
{
boolean isSina = OauthHelper.isAuthenticated(this,SHARE_MEDIA.SINA);
Toast.makeText(this, "Sina:" + Boolean.toString(isSina), Toast.LENGTH_SHORT).show();
break;
}
case R.id.button5:
{
// OauthHelper.remove(this, SHARE_MEDIA.SINA);
mController.deleteOauth(this, SHARE_MEDIA.SINA, new SocializeClientListener() {
@Override
public void onStart()
{
Toast.makeText(MainActivity.this, "on start", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(int arg0, SocializeEntity arg1)
{
Toast.makeText(MainActivity.this, "on complete", Toast.LENGTH_SHORT).show();
}
});
boolean isSina = OauthHelper.isAuthenticated(this,SHARE_MEDIA.SINA);
Toast.makeText(this, "Sina:" + Boolean.toString(isSina), Toast.LENGTH_SHORT).show();
break;
}
case R.id.button6:
{
mController.doOauthVerify(this, SHARE_MEDIA.SINA, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "授权开始", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SocializeException e, SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "授权错误", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "授权完成", Toast.LENGTH_SHORT).show();
//获取相关授权信息或者跳转到自定义的分享编辑页面
String uid = value.getString("uid");
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
}
} );
break;
}
case R.id.button7:
{
ShareUtil.simpleShare(this, editText.getText().toString(), null);
}
default:
break;
}
}
public class ShareUtil
{
public static boolean simpleShare(Context context, String text, String ImagePath)
{
if (null == text || text.trim().length() == 0)
{
return false;
}
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_SUBJECT, "share");
intent.putExtra(Intent.EXTRA_TITLE, "title");
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.setType("text/plain");
if (ImagePath != null && ImagePath.trim().length() != 0)
{
File file = new File(ImagePath.trim());
if (file.canRead())
{
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
}
}
context.startActivity(intent);
return true;
// context.startActivity(Intent.createChooser(intent, "请选择"));
}
}
备注:
1)友盟的社会化分享SDK提供的接口很易于使用,更高级的操作可以参考友盟的API。
发表评论