博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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) {
 
                          }
                  }
         }
}

  

posted on 2016-08-22 00:03  Likwo  阅读(1220)  评论(0编辑  收藏  举报