友盟
看官方API :开发者文档
/**
- 1.创建产品获得key:push产品
- 2.集成SDK (1)share:手动集成 (2)push和统计:自动集成(注意 项目gradle需要添加 maven { url ‘https://dl.bintray.com/umsdk/release’ })
- 3.推送
- 4.分享
- 5.统计
*/
package com.example.youmeng;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.message.PushAgent;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;
public class MainActivity extends AppCompatActivity {
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this,"成功了",Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(MainActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this,"取消 了",Toast.LENGTH_LONG).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PushAgent.getInstance(MainActivity.this).onAppStart();
if(Build.VERSION.SDK_INT>=23){
String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS};
ActivityCompat.requestPermissions(this,mPermissionList,123);
}
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
public void Share(View view) {
UMImage umImage=new UMImage(MainActivity.this,R.drawable.aaa);
new ShareAction(MainActivity.this).withText("hello").withMedia(umImage).setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
.setCallback(shareListener).open();
}
}
WXEntryActivity
package com.example.youmeng.wxapi;
import android.Manifest;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.view.Menu;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.weixin.view.WXCallbackActivity;
public class WXEntryActivity extends WXCallbackActivity {
}
App类
package com.example.youmeng.wxapi;
import android.app.Application;
import android.util.Log;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
public class App extends Application {
private String TAG="哈哈哈";
@Override
public void onCreate() {
super.onCreate();
UMConfigure.init(this,"5d5a45233fc1952b1800075f"
,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"16f5aa6d7e06b7aed36754fcc06506bc");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平台目前只能在服务器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
// PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
// UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");
//获取消息推送代理示例
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
//注册成功会返回deviceToken deviceToken是推送消息的唯一标志
Log.i(TAG,"注册成功:deviceToken:--------> " + deviceToken);
}
@Override
public void onFailure(String s, String s1) {
Log.e(TAG,"注册失败:--------> " + "s:" + s + ",s1:" + s1);
}
});
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分享"
android:onClick="Share"/>
</LinearLayout>
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<com.umeng.socialize.shareboard.SocializeImageView
android:id="@+id/socialize_image_view"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="5dp"
android:src="@drawable/aaa" />
<TextView
android:id="@+id/socialize_text_view"
android:layout_width="63dp"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:singleLine="true"
android:text="未知"
android:textSize="12sp" />
</LinearLayout>
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#D4E0E5">
<RelativeLayout
android:id="@+id/umeng_socialize_titlebar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="#0086DC">
<TextView
android:id="@+id/umeng_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textColor="#ffffff"
android:textSize="18sp" />
<RelativeLayout
android:id="@+id/umeng_back"
android:layout_width="60dp"
android:layout_height="match_parent"
android:onClick="onCancel"
android:visibility="visible">
<ImageButton
android:layout_width="12dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:background="@drawable/umeng_socialize_back_icon"
android:layout_marginLeft="15dp"
android:scaleType="center" />
</RelativeLayout>
<TextView
android:id="@+id/umeng_share_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_marginRight="10dp"
android:background="@drawable/umeng_socialize_btn_bg"
android:padding="4dp"
android:text="分享"
android:textColor="#ffffff" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/umeng_socialize_follow"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="#AAAAAA"
android:visibility="visible">
<CheckBox
android:id="@+id/umeng_socialize_follow_check"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:checked="true"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@id/umeng_socialize_follow_check"
android:text="关注官方微博"
android:textColor="#f8f8f8"
android:textSize="16sp"
android:visibility="gone" />
</RelativeLayout>
<!--<LinearLayout-->
<!--android:id="@+id/webView_container"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:layout_above="@id/umeng_socialize_follow"-->
<!--android:layout_below="@id/umeng_socialize_titlebar"-->
<!--android:orientation="horizontal"-->
<!--android:visibility="visible" />-->
<WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#F2F5F6"
android:layout_above="@id/umeng_socialize_follow"
android:layout_below="@id/umeng_socialize_titlebar"
android:visibility="visible" />
<RelativeLayout
android:id="@+id/progress_bar_parent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/umeng_socialize_titlebar"
android:background="#F2F5F6" >
<LinearLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerInParent="true"
android:orientation="horizontal">
<ProgressBar
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D4E0E5"
android:id="@+id/root"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/umeng_socialize_share_titlebar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="#0086DC">
<TextView
android:id="@+id/umeng_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textColor="#ffffff"
android:textSize="18sp" />
<RelativeLayout
android:id="@+id/umeng_back"
android:layout_width="50dp"
android:layout_height="match_parent"
android:onClick="onCancel"
android:visibility="visible">
<ImageButton
android:layout_width="12dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:background="@drawable/umeng_socialize_back_icon"
android:clickable="false"
android:scaleType="center" />
</RelativeLayout>
<TextView
android:id="@+id/umeng_share_btn"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:text="分享"
android:textColor="#ffffff"
android:textSize="15sp" />
</RelativeLayout>
<EditText
android:id="@+id/umeng_socialize_share_edittext"
android:layout_width="fill_parent"
android:layout_height="180dp"
android:layout_below="@id/umeng_socialize_share_titlebar"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="8dp"
android:background="#ffffff"
android:bufferType="spannable"
android:gravity="top"
android:hint="编辑分享内容"
android:lineSpacingExtra="3dp"
android:paddingBottom="10dp"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/umeng_socialize_share_word_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignRight="@id/umeng_socialize_share_edittext"
android:background="#ffffff"
android:layout_below="@id/umeng_socialize_share_edittext"
android:paddingBottom="10dp"
android:paddingRight="15dp"
android:gravity="right"
android:singleLine="true"
android:textColor="#98999B"
android:textSize="14sp" />
<RelativeLayout
android:id="@+id/umeng_socialize_share_bottom_area"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/umeng_socialize_share_word_num"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="#F2F5F6"
android:visibility="gone">
<RelativeLayout
android:layout_width="62dp"
android:layout_height="62dp"
android:layout_centerVertical="true"
android:layout_marginBottom="15dp"
android:layout_marginLeft="15dp"
android:id="@+id/umeng_image_edge"
android:layout_marginTop="15dp"
android:background="@drawable/umeng_socialize_edit_bg"
>
<ImageView
android:id="@+id/umeng_share_icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:src="#2c3035" />
</RelativeLayout>
<TextView
android:layout_width="280dp"
android:id="@+id/umeng_web_title"
android:layout_toRightOf="@id/umeng_image_edge"
android:layout_marginLeft="40dp"
android:layout_marginTop="20dp"
android:textColor="#575A5C"
android:singleLine="true"
android:textSize="14sp"
android:visibility="gone"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/umeng_del"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignRight="@id/umeng_image_edge"
android:layout_alignTop="@id/umeng_image_edge"
android:layout_marginRight="-10dp"
android:layout_marginTop="-10dp"
android:background="@drawable/umeng_socialize_delete" />
</RelativeLayout>
</RelativeLayout>
app gradele
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "29.0.0"
defaultConfig {
applicationId "com.example.youmeng"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
flavorDimensions "versionCode"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
productFlavors {
Tencent {//投放应用宝市场
}
Baidu {
// manifestPlaceholders=[UMENG_CHANNEL_VALUE:"baidu"]
}
// Wandoujia {//投放豌豆荚市场
// }
// Vivo {//投放vivo市场
// }
// Oppo {//投放oppo市场
// }
// Xiaomi {//投放小米市场
// }
// Meizu {//投放魅族市场
// }
// Huawei {//投放华为应用市场
// }
// Lenovo {//投放联想市场
// }
// Letv {//投放乐视市场
// }
// Gionee {//投放金立市场
// }
// HiMarket {//投放安卓市场
// }
}
//注意我注释掉的,可以去掉注释,那样的话,下面这句就可以不用了
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.umeng.sdk:common:latest.integration'
implementation 'com.umeng.sdk:utdid:1.1.5.3'
implementation 'com.umeng.umsdk:push:6.0.1'
implementation 'com.umeng.umsdk:analytics:8.0.0'
}
build
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.youmeng">
<!-- 必须的权限 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- 用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:name=".wxapi.App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
>
</activity>
<activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"
>
</activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--<activity-->
<!--android:name=".apshare.ShareEntryActivity"-->
<!--android:configChanges="keyboardHidden|orientation|screenSize"-->
<!--android:exported="true"-->
<!--android:screenOrientation="portrait"-->
<!--android:theme="@android:style/Theme.Translucent.NoTitleBar" />-->
<!--<activity-->
<!--android:name=".ddshare.DingCallBack"-->
<!--android:configChanges="keyboardHidden|orientation|screenSize"-->
<!--android:exported="true"-->
<!--android:screenOrientation="portrait"-->
<!--android:theme="@android:style/Theme.Translucent.NoTitleBar" />-->
<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:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<meta-data
android:name="UMENG_APPKEY"
android:value="5d5a45233fc1952b1800075f" />
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
</application>
</manifest>