package com.secondworld.univeralsdk; 
 | 
  
 | 
import android.Manifest; 
 | 
import android.app.Activity; 
 | 
import android.app.AlertDialog; 
 | 
import android.content.ClipData; 
 | 
import android.content.ClipboardManager; 
 | 
import android.content.Context; 
 | 
import android.content.DialogInterface; 
 | 
import android.content.Intent; 
 | 
import android.content.pm.ApplicationInfo; 
 | 
import android.content.pm.PackageInfo; 
 | 
import android.content.pm.PackageManager; 
 | 
import android.content.pm.PermissionInfo; 
 | 
import android.net.ConnectivityManager; 
 | 
import android.net.NetworkInfo; 
 | 
import android.net.Uri; 
 | 
import android.net.wifi.WifiInfo; 
 | 
import android.net.wifi.WifiManager; 
 | 
import android.os.Process; 
 | 
import android.provider.Settings; 
 | 
import android.support.v4.content.PermissionChecker; 
 | 
import android.widget.Toast; 
 | 
  
 | 
import com.unity3d.player.UnityPlayer; 
 | 
  
 | 
import org.json.JSONException; 
 | 
import org.json.JSONObject; 
 | 
  
 | 
import java.io.BufferedReader; 
 | 
import java.io.File; 
 | 
import java.io.FileNotFoundException; 
 | 
import java.io.FileReader; 
 | 
import java.io.IOException; 
 | 
import java.io.InputStreamReader; 
 | 
import java.net.Inet4Address; 
 | 
import java.net.InetAddress; 
 | 
import java.net.NetworkInterface; 
 | 
import java.net.SocketException; 
 | 
import java.net.URL; 
 | 
import java.net.URLConnection; 
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.Date; 
 | 
import java.util.Enumeration; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * Created by Administrator on 2018/6/15 0015. 
 | 
 */ 
 | 
  
 | 
public class UniversalUtil 
 | 
{ 
 | 
    private final static String TAG = "UniversalUtil"; 
 | 
  
 | 
    /** 
 | 
     * 获得应用的版本号 
 | 
     */ 
 | 
    public static String GetVersionName(Context context) 
 | 
    { 
 | 
        PackageManager _packageManager = context.getPackageManager(); 
 | 
        PackageInfo _packageInfo = null; 
 | 
  
 | 
        try 
 | 
        { 
 | 
            _packageInfo = _packageManager.getPackageInfo(context.getPackageName(), 0); 
 | 
        } catch (Exception e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
  
 | 
        if (_packageInfo != null) 
 | 
        { 
 | 
            return _packageInfo.versionName; 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static void sendMessageToUnity(Map<String, Object> jsonMap) 
 | 
    { 
 | 
        if (jsonMap == null || jsonMap.isEmpty()) 
 | 
        { 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        JSONObject _jsonObject = new JSONObject(jsonMap); 
 | 
  
 | 
        UnityPlayer.UnitySendMessage(StaticDefine.UnityGameObjectName, 
 | 
                                     StaticDefine.UnityHandleFuncName, 
 | 
                                     _jsonObject.toString()); 
 | 
    } 
 | 
  
 | 
    public static void sendDebugLogToUnity(String content) 
 | 
    { 
 | 
        JSONObject _jsonObject = new JSONObject(); 
 | 
        try 
 | 
        { 
 | 
            _jsonObject.put("code", 6); 
 | 
            _jsonObject.put("info", content); 
 | 
        } catch (JSONException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        UnityPlayer.UnitySendMessage(StaticDefine.UnityGameObjectName, 
 | 
                                     StaticDefine.UnityHandleFuncName, 
 | 
                                     _jsonObject.toString()); 
 | 
    } 
 | 
  
 | 
    public static void InstallAPK(Context context, final String path) 
 | 
    { 
 | 
        File _file = new File(path); 
 | 
  
 | 
        if (_file == null) 
 | 
        { 
 | 
            Toast.makeText(context, "给定的地址[" + path + "]找不到要安装的应用文件", Toast.LENGTH_SHORT).show(); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        try 
 | 
        { 
 | 
            Intent _intent = new Intent(Intent.ACTION_VIEW); 
 | 
  
 | 
//            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) 
 | 
//            { 
 | 
//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
 | 
//                Uri _contentUri = FileProvider.getUriForFile(context, 
 | 
//                                                             context.getPackageName() + ".fileProvider", 
 | 
//                                                             _file); 
 | 
//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive"); 
 | 
//            } 
 | 
//            else 
 | 
//            { 
 | 
            _intent.setDataAndType(Uri.fromFile(_file), 
 | 
                                   "application/vnd.android.package-archive"); 
 | 
            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
 | 
//            } 
 | 
  
 | 
            context.startActivity(_intent); 
 | 
  
 | 
        } catch (Exception e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
            Toast.makeText(context, "找不到打开此类型文件的程序", Toast.LENGTH_SHORT).show(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static String getStringDate() { 
 | 
        Date currentTime = new Date(); 
 | 
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
 | 
        String dateString = formatter.format(currentTime); 
 | 
        return dateString; 
 | 
    } 
 | 
  
 | 
    public static void CopyTextToClipboard(final Activity activity, final String text) 
 | 
    { 
 | 
        activity.runOnUiThread(new Runnable() 
 | 
        { 
 | 
            @Override 
 | 
            public void run() 
 | 
            { 
 | 
                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService( 
 | 
                        Context.CLIPBOARD_SERVICE); 
 | 
                ClipData _data = ClipData.newPlainText("playerId", text); 
 | 
                _mgr.setPrimaryClip(_data); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    public static long getMemTotal() 
 | 
    { 
 | 
        try 
 | 
        { 
 | 
            FileReader fileReader = new FileReader("/proc/meminfo"); 
 | 
            BufferedReader bufferedReader = new BufferedReader(fileReader, 4 * 1024); 
 | 
            String str; 
 | 
            while ((str = bufferedReader.readLine()) != null) 
 | 
            { 
 | 
                if (str.contains("MemTotal")) 
 | 
                { 
 | 
                    break; 
 | 
                } 
 | 
            } 
 | 
            bufferedReader.close(); 
 | 
            fileReader.close(); 
 | 
            String[] array = str.split("\\s+"); 
 | 
            // 获得系统总内存,单位是KB 
 | 
            return Integer.valueOf(array[1]).intValue(); 
 | 
        } catch (FileNotFoundException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } catch (IOException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return 0; 
 | 
    } 
 | 
  
 | 
    public static String getPublicIp(boolean useHttps) 
 | 
    { 
 | 
        String _ip; 
 | 
        try 
 | 
        { 
 | 
            URL ipify = useHttps ? new URL("https://api.ipify.org") : new URL( 
 | 
                    "http://api.ipify.org"); 
 | 
            URLConnection conn = ipify.openConnection(); 
 | 
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
 | 
            _ip = in.readLine(); 
 | 
            in.close(); 
 | 
        } catch (IOException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return ""; 
 | 
    } 
 | 
  
 | 
    public static String getIP(Context context) 
 | 
    { 
 | 
        NetworkInfo info = ((ConnectivityManager) context 
 | 
                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 
 | 
        if (info != null && info.isConnected()) 
 | 
        { 
 | 
            if (info.getType() == ConnectivityManager.TYPE_MOBILE) 
 | 
            {//当前使用2G/3G/4G网络 
 | 
                try 
 | 
                { 
 | 
                    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) 
 | 
                    { 
 | 
                        NetworkInterface intf = en.nextElement(); 
 | 
                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) 
 | 
                        { 
 | 
                            InetAddress inetAddress = enumIpAddr.nextElement(); 
 | 
                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) 
 | 
                            { 
 | 
                                return inetAddress.getHostAddress(); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } catch (SocketException e) 
 | 
                { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
  
 | 
            } 
 | 
            else if (info.getType() == ConnectivityManager.TYPE_WIFI) 
 | 
            {//当前使用无线网络 
 | 
                WifiManager wifiManager = (WifiManager) context.getSystemService( 
 | 
                        Context.WIFI_SERVICE); 
 | 
                WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
 | 
                return intIP2StringIP(wifiInfo.getIpAddress()); 
 | 
            } 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            //当前无网络连接,请在设置中打开网络 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    private static String intIP2StringIP(int ip) 
 | 
    { 
 | 
        return (ip & 0xFF) + "." + 
 | 
                ((ip >> 8) & 0xFF) + "." + 
 | 
                ((ip >> 16) & 0xFF) + "." + 
 | 
                (ip >> 24 & 0xFF); 
 | 
    } 
 | 
  
 | 
    public static boolean hasRWP = false; 
 | 
    public static boolean hasGoToSetting = false; 
 | 
  
 | 
    public static void CheckWriteAndReadExternalStorage(final Activity activity) 
 | 
    { 
 | 
        //Log.i("MainActivity", "CheckWriteAndReadExternalStorage 开始 hasGoToSetting: " + hasGoToSetting); 
 | 
  
 | 
        if (hasRWP && !hasGoToSetting) 
 | 
        { 
 | 
            //Log.i("MainActivity", "1111 有权限"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (PermissionChecker.checkPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, 
 | 
                                              Process.myPid(), Process.myUid(), 
 | 
                                              activity.getPackageName()) == PackageManager.PERMISSION_GRANTED) 
 | 
        { 
 | 
            //Log.i("MainActivity", "有权限"); 
 | 
            hasRWP = true; 
 | 
            if (hasGoToSetting) 
 | 
            { 
 | 
                //Log.i("MainActivity", "去过设置界面, 这里重启"); 
 | 
                activity.runOnUiThread(new Runnable() 
 | 
                { 
 | 
                    @Override 
 | 
                    public void run() 
 | 
                    { 
 | 
                        new Thread() 
 | 
                        { 
 | 
                            public void run() 
 | 
                            { 
 | 
                                String _packageName = activity.getPackageName(); 
 | 
                                Intent _launch = activity.getBaseContext().getPackageManager().getLaunchIntentForPackage( 
 | 
                                        _packageName); 
 | 
                                _launch.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
 | 
                                activity.startActivity(_launch); 
 | 
                                Process.killProcess(Process.myPid()); 
 | 
                            } 
 | 
                        }.start(); 
 | 
                        activity.finish(); 
 | 
                    } 
 | 
                }); 
 | 
            } 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (!hasRWP) 
 | 
        { 
 | 
            new AlertDialog.Builder(activity) 
 | 
                    .setMessage("应用没有存储读取权限,点击确定至设置中开启,否则无法继续游戏.") 
 | 
                    .setCancelable(false) 
 | 
                    .setPositiveButton("确定", 
 | 
                                       new DialogInterface.OnClickListener() 
 | 
                                       { 
 | 
                                           @Override 
 | 
                                           public void onClick(DialogInterface dialogInterface, 
 | 
                                                               int i) 
 | 
                                           { 
 | 
                                               UniversalUtil.hasGoToSetting = true; 
 | 
                                               Intent intent = new Intent( 
 | 
                                                       Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
 | 
                                               intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
 | 
                                               Uri uri = Uri.fromParts("package", 
 | 
                                                                       activity.getPackageName(), 
 | 
                                                                       null); 
 | 
                                               intent.setData(uri); 
 | 
                                               activity.startActivity(intent); 
 | 
                                           } 
 | 
                                       }) 
 | 
                    .setNegativeButton("拒绝", 
 | 
                                       new DialogInterface.OnClickListener() 
 | 
                                       { 
 | 
                                           @Override 
 | 
                                           public void onClick(DialogInterface dialogInterface, 
 | 
                                                               int i) 
 | 
                                           { 
 | 
                                               activity.finish(); 
 | 
                                           } 
 | 
                                       }) 
 | 
                    .show(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static boolean checkPermission22(Activity activity, String permission) 
 | 
    { 
 | 
        PackageManager _pkgMgr = activity.getPackageManager(); 
 | 
        LogUtil.i(TAG, "开始检测权限: " + permission); 
 | 
        try 
 | 
        { 
 | 
            PermissionInfo _info = _pkgMgr.getPermissionInfo(permission, 
 | 
                                                             PackageManager.GET_META_DATA); 
 | 
  
 | 
            LogUtil.i(TAG, "  |-- 保护级别: " + _info.protectionLevel); 
 | 
            if (_info.protectionLevel != PermissionInfo.PROTECTION_DANGEROUS && _info.protectionLevel != 4097) 
 | 
            { 
 | 
                LogUtil.i(TAG, "  |-- 不是危险权限."); 
 | 
                return false; 
 | 
            } 
 | 
  
 | 
        } catch (PackageManager.NameNotFoundException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
  
 | 
        int _result = PermissionChecker.checkPermission(activity, permission, 
 | 
                                                        Process.myPid(), Process.myUid(), 
 | 
                                                        activity.getPackageName()); 
 | 
  
 | 
        LogUtil.i(TAG, "  |-- 获取类型: " + _result); 
 | 
  
 | 
        if (_result == PackageManager.PERMISSION_GRANTED) 
 | 
        { 
 | 
            LogUtil.i(TAG, permission + " 有这个权限."); 
 | 
            return false; 
 | 
        } 
 | 
  
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    public static String getMetaString(Activity activity, String key) 
 | 
    { 
 | 
        PackageManager _pkgMgr = activity.getPackageManager(); 
 | 
        ApplicationInfo _appInfo; 
 | 
        try 
 | 
        { 
 | 
            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(), 
 | 
                                                  PackageManager.GET_META_DATA); 
 | 
            return _appInfo.metaData.getString(key); 
 | 
        } catch (PackageManager.NameNotFoundException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static int getMetaInt(Activity activity, String key) 
 | 
    { 
 | 
        LogUtil.i(TAG, "将要获取的MetaKey: " + key); 
 | 
        PackageManager _pkgMgr = activity.getPackageManager(); 
 | 
        ApplicationInfo _appInfo; 
 | 
        try 
 | 
        { 
 | 
            _appInfo = _pkgMgr.getApplicationInfo(activity.getPackageName(), 
 | 
                                                  PackageManager.GET_META_DATA); 
 | 
            return _appInfo.metaData.getInt(key); 
 | 
        } catch (PackageManager.NameNotFoundException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return -1; 
 | 
    } 
 | 
  
 | 
    public static boolean isEmpty(String s) 
 | 
    { 
 | 
        if (null == s) 
 | 
        { 
 | 
            return true; 
 | 
        } 
 | 
        if (s.length() == 0) 
 | 
        { 
 | 
            return true; 
 | 
        } 
 | 
        if (s.trim().length() == 0) 
 | 
        { 
 | 
            return true; 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
} 
 |