最近项目中涉及到了分享和推送了功能,这次选择了友盟平台社会化分享和推送。
【遇到的问题:】
一、U-Share社会化分享:
1.qq分享失败,提示网络问题请重试
2.qq分享成功后提示分享取消了
出现这个问题的原因在于QQ部分的回调没有正确配置,检查下面几点:
1. Android manifest xml正确配置
[AppleScript]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
<
activity
android
:
name
=
"com.tencent.tauth.AuthActivity"
android
:
launchMode
=
"singleTask"
android
:
noHistory
=
"true"
>
<
intent
-
filter
>
<
action android
:
name
=
"android.intent.action.VIEW"
/
>
<
category android
:
name
=
"android.intent.category.DEFAULT"
/
>
<
category android
:
name
=
"android.intent.category.BROWSABLE"
/
>
<
data
android
:
scheme
=
"tencent100424468"
/
>
<
/
intent
-
filter
>
<
/
activity
>
<
activity
android
:
name
=
"com.tencent.connect.common.AssistActivity"
android
:
screenOrientation
=
"portrait"
android
:
theme
=
"@android:style/Theme.Translucent.NoTitleBar"
/
>
|
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
这两处的APPid应该是一致的,同时注意不要删掉tencent前缀
2. 注意实现onActivityresult方法
在分享所在的Activity(不能复写在fragment)里实现下面的方法
[AppleScript]
纯文本查看
复制代码
1
2
3
4
5
6
7
|
onActivityResult
(
)
@Override
protected void onActivityResult
(
int requestCode
,
int resultCode
,
Intent
data
)
{
super.onActivityResult
(
requestCode
,
resultCode
,
data
)
;
mShareAPI.onActivityResult
(
requestCode
,
resultCode
,
data
)
;
}
|
1.同一个第三方平台,虽然集成了多个服务功能,但是 AndroidManifest文件中配置的AppKey是相同的(注:用的是同一个appkey)
<meta-data android:name="UMENG_APPKEY" android:value="XXXXXXXXXXXXXXXX"></meta-data>2.如果配置了不同的则会发生冲突,报这个错
Execution failed for task':app:processDebugManifest'.>mainifest merger failed with multiple errors,see logs
3.微信分享必须签名否则无法使用:具体操作步骤请参考友盟SDK开发集成文档 http://dev.umeng.com/social/android/operation
4.分享的图片必须是带有域名的,是ip地址的图片会损坏,无法显示,并且分享QQ好友的时候提示网络错误请重试!
然后增加签名文件的密码:
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
二、友盟推送:
关键代码:在MyApplication中添加,此处指展示如何实现自定义行为,即点击通知栏后的后续操作:
其他具体实现结合开发文档及demo
/** * 自定义行为的回调处理 * UmengNotificationClickHandler是在BroadcastReceiver中被调用,故 * 如果需启动Activity,需添加Intent.FLAG_ACTIVITY_NEW_TASK * */ UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() { @Override public void dealWithCustomAction(Context context, UMessage msg) { //Toast.makeText(context, msg.custom.toString(), Toast.LENGTH_LONG).show(); //Toast.makeText(context, msg.extra.get("contentId"), Toast.LENGTH_LONG).show(); if(!TextUtils.isEmpty(msg.toString())){ Intent intent=new Intent(context,ArticleDetailActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); String contentId=msg.extra.get("contentId"); Bundle bundle=new Bundle(); bundle.putString("contentId",contentId); intent.putExtras(bundle); //Log.i("TaG","contentId="+contentId.toString()); startActivity(intent); } } }; //使用自定义的NotificationHandler,来结合友盟统计处理消息通知 //参考http://bbs.umeng.com/thread-11112-1-1.html //CustomNotificationHandler notificationClickHandler = new CustomNotificationHandler(); mPushAgent.setNotificationClickHandler(notificationClickHandler);