之前做的时候在网上找了好多有现在整理下一个可以用的

代码段如下

在java中编写

public String GetID(){String serial = null;String m_szDevIDShort = "35" +Build.BOARD.length()%10+ Build.BRAND.length()%10 +Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +Build.DISPLAY.length()%10 + Build.HOST.length()%10 +Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +Build.TAGS.length()%10 + Build.TYPE.length()%10 +Build.USER.length()%10 ; //13 位try {serial = android.os.Build.class.getField("SERIAL").get(null).toString();//API>=9 使用serial号return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();} catch (Exception exception) {//serial需要一个初始化serial = "serial"; // 随便一个初始化}return  new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();//使用硬件信息拼凑出来的15位号码}

这段代码在unity中Call   arr包,然后直接调用就可以使用了.

详细流程如下:

Unity端代码

//Demo
public class GameMain : MonoBehaviour {public Text text;public Button Button;AndroidJavaObject _ajc;void Start () {_ajc = new AndroidJavaObject("com.example.myunitylib.unity");Button.onClick.AddListener(Touch);}public void Touch(){text.text += string.Format("已经点击!!正在获取\n");text.text += _ajc.Call<string>("GetID");// GetID是安卓端的代码,这里通过call arr包调用这一方法,返回一个string值,就可以获得手机的唯一验证码了}
}

Unity端不难...主要就是Unity->安卓的交互了

这里采用一个非常方便的方法,之前在网上看到的,比那种拖jar方便很多

首先下载Android Studio 最新版本

官网如下

https://developer.android.google.cn/

建议配置好java环境

sdk api包下载好

接着开始正式步骤

1.打开Android Studio 创建安卓项目,如下

新建库

2创建新的MainActivity

3代码

import android.os.Build;
import android.util.Log;
import android.widget.Toast;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class unity {private Activity _unityActivity;unity(){if(null==_unityActivity){getActivity();}}/*获取unity项目的上下文*/Activity getActivity(){if(null==_unityActivity){try{Class<?> classtype=Class.forName("com.unity3d.player.UnityPlayer");Activity activity=(Activity)classtype.getDeclaredField("currentActivity").get(classtype);_unityActivity=activity;} catch (ClassNotFoundException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();}}return  _unityActivity;}/*call unity的方法*/boolean callUnity(String gameObjectName, String functionName, String args){try {Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");Method method =classtype.getMethod("UnitySendMessage", String.class,String.class,String.class);method.invoke(classtype,gameObjectName,functionName,args);return true;} catch (ClassNotFoundException e) {} catch (NoSuchMethodException e) {} catch (IllegalAccessException e) {} catch (InvocationTargetException e) {}return false;}///获取唯一ID   返回一个String 直接接收使用就可以public String GetID(){String serial = null;String m_szDevIDShort = "35" +Build.BOARD.length()%10+ Build.BRAND.length()%10 +Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +Build.DISPLAY.length()%10 + Build.HOST.length()%10 +Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +Build.TAGS.length()%10 + Build.TYPE.length()%10 +Build.USER.length()%10 ; //13 位try {serial = android.os.Build.class.getField("SERIAL").get(null).toString();//API>=9 使用serial号return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();} catch (Exception exception) {//serial需要一个初始化serial = "serial"; // 随便一个初始化}return  new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();//使用硬件信息拼凑出来的15位号码}//安卓端弹出系统Tip 可以直接调用public void SendTip(String congtent){Toast.makeText(getActivity(),congtent,Toast.LENGTH_SHORT).show();}
}

4打成arr文件

arr包位置在Output文件夹

5将arr包移动到unity  自创文件夹plugins中

完成

[Unity][安卓]unity获取唯一ID,游客登陆相关推荐

  1. Unity安卓生成设备唯一id

    目标:生成唯一id,重启后生成仍旧相同. 其实可以使用GAID等来源于其他SDK的唯一id,但是为了一个UUID而接入一些SDK,好像也不太对 这里参考网上一些内容,通过设备相关信息,生成UUID.作 ...

  2. Android10获取唯一ID最佳做法

    官方文档 安卓Q中Google彻底禁止第三发app获取IMEI,WIFI和蓝牙的MAC地址为:02:00:00:00:00:00. 1.使用实例 ID 和 GUID 对于实例 ID 不实用的情况,您还 ...

  3. Android 获取唯一Id

    git:GitHub - gzu-liyujiang/Android_CN_OAID: 安卓设备唯一标识解决方案,可完全替代移动安全联盟统一 SDK 闭源方案.包括国内手机厂商的开放匿名标识(OAID ...

  4. C# 高并发获取唯一ID算法

    凡事涉及到高性能貌似都是高大上的东西,所以嘛我也试试:其实这个时间戳ID的生成主要为了解决我们公司内部的券号生成,估计有小伙伴认为券号生成有这么麻烦嘛,搞个自增ID完全可以用起来,或者时间取毫微米时间 ...

  5. android 获取唯一Id,小小总结一下。仅供参考

    1.获取imei: 前言: 因传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分, 并存在被篡改和冒用的风险,所以在Android 10及后续版本中非厂商系统应 ...

  6. Unity.安卓微信支付与ShareSDK微信登陆合并

    上篇补充:先看下流程图 还需要进行箭头标记的步骤 1.成功支付后,需要在将回调的地方,将结果发给服务器,由服务器调用查询订单接口查询,以服务器的结果为准. 2.可购买的商品一般都会有自己的数据表配置, ...

  7. Android Q(安卓10)获取唯一ID(最优解)

    安卓Q中google彻底禁止了第三发应用获取imei,并且mac地址返回的地址也变成了02:00:00:00:00:00. 这是官方给出的解决方案: https://developer.android ...

  8. swing的jlist的值怎么获取_彻底解决安卓/IOS获取蓝牙ID不一致的问题

    ​不知道大家对低能蓝牙的技术应用了解的怎么样,其实这是一个比较广的应用,比如可以应用于一些信标.家庭娱乐或者医疗方面都有应用. 01 前言 因为小程序官方是支持接入低能蓝牙(BLE)的,所以在一个项目 ...

  9. 获取安卓设备唯一ID

    先介绍安卓设备中的几种ID 1.IMEI Android系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的,可以说几乎所有的设备都可以返回这个串号,并且唯一性良好.它根据不同的手机设 ...

最新文章

  1. [01-01]oracle数据库汉化
  2. 11.Java面向对象(二)
  3. chisel快速入门(一)
  4. 40天python入门教程_Python入门教程超详细1小时学会Python
  5. 工行高级经理林承军:工行基于 MySQL 构建分布式架构的转型之路
  6. 2019年新年第一天,我也制定一下2019年计划,
  7. python math库基本函数
  8. 可以联机的的单机游戏
  9. 《程序员修炼之道(第2版)》到货!屹立20年影响力大作归来!
  10. 在计算机编程里pi是什么意思,编程中的术语“钩子”是什么意思?
  11. 万亿级消息队列 Kaka 在 Bilibili 实践
  12. GitHub 上100个优质前端项目整理,非常全面!
  13. 算法分析与设计实验报告——二分搜索算法的实现
  14. STM32的串口硬件流控(RS232/RS485)
  15. 3.4 随机变量的相互独立性
  16. java pns 向 IOS 推送消息错误记录
  17. 14宽的键槽深度多少_国家标准键槽深度
  18. 初识人脸识别---人脸识别研究报告(概述篇)
  19. L1-040 最佳情侣身高差 (10 分)
  20. python读取图片分辨率_python获取网页中所有图片并筛选指定分辨率的方法

热门文章

  1. ORB_SLAM的ORB特征提取:
  2. 編程的本質:编程也应像其他科学和工程领域一样基于坚实的数学基础
  3. MOS管被ESD击穿解决方案-KIA MOS管
  4. Linux fuser 命令详解------常用选项fuser功能使用
  5. linux bin fuser,Linux中fuser命令用法详解
  6. 什么是VIP(Virtual IP Address)
  7. 百度、Google、bing搜索接口
  8. BZOJ 5252 林克卡特树 —— 树形dp + wqs二分
  9. Android 9.0系统源码_广播(一)广播的注册
  10. 惠普电脑u盘重装系统步骤_解决惠普电脑u盘重装系统win10教程