码迷,mamicode.com
首页 > 移动开发 > 详细

umeng 渠道统计 android

时间:2016-08-22 02:09:46      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:

1、配置AndroidManifest.xml,添加权限

 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

 

2 在应用程序的 Application类的onCreate方法中调用Test类中的sendMessage方法,在方法中传入本应用的Appkey。

 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.Manifest.permission;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Environment;
import android.provider.Settings.Secure;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;

public class Test {
         private static final Pattern pattern = Pattern.compile("UTDID\">([^<]+)");
 
         /**
         * * send message To Server * * @param context * android Context. * @param*
         * appkey * umeng appkey
         *
          * @throws UnsupportedEncodingException
         */
         @SuppressWarnings("deprecation")
         public void sendMessage(Context context, String appkey)
                          throws UnsupportedEncodingException {
                  StringBuilder sber = new StringBuilder();
                  sber.append("https://ar.umeng.com/stat.htm?");
                  if (!TextUtils.isEmpty(appkey)) {
                          sber.append("ak=").append(appkey);
                  }
 
                  String devicename = Build.MODEL;
 
                  if (!TextUtils.isEmpty(devicename)) {
                          sber.append("&device_name=").append(
                                            URLEncoder.encode(devicename, "UTF-8"));
                  }
 
                  TelephonyManager tm = (TelephonyManager) context
                                   .getSystemService(Context.TELEPHONY_SERVICE);
                  PackageManager pm = context.getPackageManager();
 
                  if (pm.checkPermission(permission.READ_PHONE_STATE,
                                   context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
                          String imei = tm.getDeviceId();
 
                          if (!TextUtils.isEmpty(imei)) {
                                   sber.append("&imei=").append(URLEncoder.encode(imei,"UTF-8"));
                          }
                  }
 
                  if (pm.checkPermission(permission.ACCESS_WIFI_STATE,
                                   context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
 
                          WifiManager wifi = (WifiManager) context
                                            .getSystemService(Context.WIFI_SERVICE);
                          WifiInfo info = wifi.getConnectionInfo();
                          String mac = info.getMacAddress();
 
                          // String mac = tm.getDeviceId();
                          if (!TextUtils.isEmpty(mac)) {
                                   sber.append("&mac=").append(URLEncoder.encode(mac,"UTF-8"));
                          }
                  }
 
                  String androidId = Secure.getString(context.getContentResolver(),
                                   Secure.ANDROID_ID);
                  if (!TextUtils.isEmpty(androidId)) {
                          sber.append("&android_id=").append(URLEncoder.encode(androidId,"UTF-8"));
                  }
 
                  String utdid = getUTDid(context);
                  if (!TextUtils.isEmpty(utdid)) {
                          sber.append("&utdid=").append(URLEncoder.encode(utdid,"UTF-8"));
                  }
 
                  HttpURLConnection conn = null;
                  try {
 
                          conn = (HttpURLConnection) new URL(sber.toString())
                                            .openConnection();
 
                          conn.setRequestMethod("GET");
                          conn.setDoOutput(true);
                          conn.setDoInput(true);
                          conn.setUseCaches(false);
                          if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
                                   System.setProperty("http.keepAlive", "false");
                          }
                          int code = conn.getResponseCode();
                          if (code == 200) {
                                   InputStream inputStream = conn.getInputStream();
 
                                   // do something
                          } else {
                                   Log.e("test", "status code: " + code);
                          }
                  } catch (Exception e) {
                          System.out.print(e.getMessage());
                  } finally {
                          if (conn != null) {
                                   conn.disconnect();
                          }
                  }
         }
 
         /**
         * * get UTDID * * @param context * @return
         */
         private String getUTDid(Context context) {
                  try {
                          Class<?> utdevice = Class.forName("com.ut.device.UTDevice");
                          Method reMethod = utdevice.getMethod("getUtdid", Context.class);
                          return (String) reMethod.invoke(null, context);
                  } catch (Exception e) {
                          return readNativeFile(context);
                  }
         }
        
         //get mac
 
         /**
         * * read native file method * * @param context * @return
         */
         private String readNativeFile(Context context) {
                  File f = getFile(context);
                  if (f == null || !f.exists()) {
                          return null;
                  }
                  try {
                          FileInputStream fis = new FileInputStream(f);
                          try {
                                   return parseId(readStreamToString(fis));
                          } finally {
                                   safeClose(fis);
                          }
                  } catch (Exception e) {
                          e.printStackTrace();
                  }
                  return null;
         }
 
         /**
         * * java pattern parse native utdid * * @param content * @return
         */
         private String parseId(String content) {
                  if (content == null) {
                          return null;
                  }
                  Matcher matcher = pattern.matcher(content);
                  if (matcher.find()) {
                          return matcher.group(1);
                  }
                  return null;
         }
 
         /** * read native file * * @param context * @return */
 
         private File getFile(Context context) {
                  PackageManager pm = context.getPackageManager();
                  if (pm.checkPermission(permission.WRITE_EXTERNAL_STORAGE,
                                   context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
                          return null;
                  }
                  if (Environment.getExternalStorageState().equals(
                                   Environment.MEDIA_MOUNTED)) {
                          File sdCardDir = Environment.getExternalStorageDirectory();
                          try {
                                   return new File(sdCardDir.getCanonicalPath(),
                                                     ".UTSystemConfig/Global/Alvin2.xml");
                          } catch (Exception ignore) {
                          }
                  }
                  return null;
         }
 
         /**
         * * convert inputstream to String * * @param input * @return * @throws
         * IOException
         * */
         private String readStreamToString(InputStream input) throws IOException {
                  InputStreamReader reader = new InputStreamReader(input);
                  char[] buffer = new char[1024];
                  int n = 0;
                  StringWriter writer = new StringWriter();
                  while (-1 != (n = reader.read(buffer))) {
                          writer.write(buffer, 0, n);
 
                  }
                  return writer.toString();
         }
 
         /**
         * * close io stream * * @param is
         */
         private void safeClose(InputStream is) {
                  if (is != null) {
                          try {
                                   is.close();
                          } catch (Exception e) {
 
                          }
                  }
         }
}

  

umeng 渠道统计 android

标签:

原文地址:http://www.cnblogs.com/likwo/p/5794071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!