天道酬勤,学无止境

以编程方式在 Android Nougat 和 O 中获取设备 mac 地址(Get Device mac adress in Android Nougat and O programmatically)

问题

我有一个应用程序,它需要设备 mac 地址。 我很容易在 Marshmallow 及以下获取 mac 地址,但 android nougat 和 O 有问题。那么如何找到 mac。

回答1

自 6.0 及更高版本更改:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

为了向用户提供更好的数据保护,从本版本开始,Android 删除了使用 Wi-Fi 和蓝牙 API 的应用程序对设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法现在返回一个常量值 02:00:00:00:00:00。

要通过蓝牙和 Wi-Fi 扫描访问附近外部设备的硬件标识符,您的应用现在必须具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。

7.0 中的行为变化:

设备所有者可以访问设备标识符。 设备所有者可以使用 DevicePolicyManagewr.getWifiMacAddress() 访问设备的 Wi-Fi MAC 地址。 如果设备上从未启用 Wi-Fi,则此方法返回值 null。

回答2

一小时后,我刚刚解决了问题......

DeviceAdminReceiver admin = new DeviceAdminReceiver();
DevicePolicyManager devicepolicymanager = admin.getManager(getApplicationContext());
ComponentName name1 = admin.getWho(getApplicationContext());
if (devicepolicymanager.isAdminActive(name1)){
            String mac_address = devicepolicymanager.getWifiMacAddress(name1);
            Log.e("macAddress",""+mac_address);
}

参考 :

1)Android 工作:https://developer.android.com/about/versions/nougat/android-7.0-changes.html

2) DevicePolicyManger : https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getWifiMacAddress(android.content.ComponentName)

3) DeviceAdminReceiver: https://developer.android.com/reference/android/app/admin/DeviceAdminReceiver.html#getWho(android.content.Context)

快乐编码....

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 以编程方式获取设备的Android API级别?(Programmatically obtain the Android API level of a device?)
    问题 如何确定我的设备正在使用哪个API级别? 固件版本为1.6。 这是否意味着它使用API​​级别4? 回答1 您可以通过系统常数( Build.VERSION.SDK_INT )以编程方式获取API级别。 例如,您可以通过以下方式运行一些需要较新API的代码(如果当前设备的API级别至少为4,它将执行) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) { } 要获取用户可见的Android版本,请使用: Build.VERSION.RELEASE 回答2 您需要什么:http://developer.android.com/reference/android/os/Build.VERSION_CODES.html SDK_INT value Build.VERSION_CODES Human Version Name 1 BASE Android 1.0 (no codename) 2 BASE_1_1 Android 1.1 Petit Four 3 CUPCAKE Android 1.5 Cupcake 4 DONUT Android 1.6 Donut 5 ECLAIR Android 2.0 Eclair 6 ECLAIR_0_1 Android 2.0.1 Eclair 7 ECLAIR_MR1
  • 能否以编程方式获取运行 Android 6.0+ 的设备的 MAC 地址?(Can one programmatically obtain the MAC address of a device running Android 6.0+?)
    问题 能否以编程方式获取运行 Android 6.0+ 的设备的 MAC 地址? 根据这个, 为了向用户提供更好的数据保护,从本版本开始,Android 删除了使用 Wi-Fi 和蓝牙 API 的应用程序对设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法现在返回一个常量值 02:00:00:00:00:00。 这是否意味着无法在 Android 6.0+ 中获取设备的 MAC 地址? 如果可能的话,你能告诉我如何在 Android Studio 中做到这一点吗? 此外,此答案仅适用于 Android 版本低于 6.0 的设备 回答1 您可以使用替代方法在 Android 6.0 设备上获取 MAC 地址。 首先将 Internet 用户权限添加到您的 AndroidManifest.xml 中: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 第二, try { // get all the interfaces List<NetworkInterface>
  • 如何在Android中以编程方式获取设备的IMEI / ESN?(How to get the device's IMEI/ESN programmatically in android?)
    问题 为了唯一地标识每个设备,我想使用IMEI(或CDMA设备的ESN编号)。 如何以编程方式访问它? 回答1 您要调用android.telephony.TelephonyManager.getDeviceId()。 这将返回唯一标识设备的任何字符串(GSM上的IMEI,CDMA上的MEID)。 您需要在AndroidManifest.xml具有以下权限: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 为此。 话虽这么说,请谨慎执行此操作。 用户不仅会想知道为什么您的应用程序正在访问他们的电话堆栈,而且如果用户购买了新设备,可能很难迁移数据。 更新:如下面的评论中所述,这不是一种验证用户身份的安全方法,并且会引起隐私问题。 不推荐。 相反,如果您想实现无摩擦的登录系统,请查看Google+登录API。 如果您只想以一种轻巧的方式在用户重置手机(或购买新设备)时保留一串字符串,则还可以使用Android Backup API。 回答2 In addition to the answer of Trevor Johns, you can use this as follows: TelephonyManager telephonyManager = (TelephonyManager
  • 如何以编程方式查找Android设备的MAC地址(How to find MAC address of an Android device programmatically)
    问题 如何以编程方式获取Android设备的Mac ID。 我已经完成了IMIE Code,并且知道如何手动检查设备上的Mac ID,但不知道如何以编程方式查找。 回答1 WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wInfo = wifiManager.getConnectionInfo(); String macAddress = wInfo.getMacAddress(); 另外,在清单文件中添加以下权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 请参考Android 6.0更改。 为了向用户提供更好的数据保护,从此版本开始,Android会使用Wi-Fi和Bluetooth API删除对应用的设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()方法现在返回常数值02:00:00:00:00:00。 要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE
  • 以编程方式获取Android设备的MAC(Programmatically getting the MAC of an Android device)
    问题 我需要使用Java获取我的android设备的MAC地址。 我已经在网上搜索过,但没有发现任何有用的信息。 回答1 正如评论中已经指出的那样,可以通过WifiManager接收MAC地址。 WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = manager.getConnectionInfo(); String address = info.getMacAddress(); 同样不要忘记将适当的权限添加到您的AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 请参考Android 6.0更改。 为了向用户提供更好的数据保护,从此版本开始,Android会使用Wi-Fi和Bluetooth API删除对应用的设备本地硬件标识符的编程访问。 WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()方法现在返回常数值02:00:00:00:00:00。 要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE
  • 如何使用XCode以编程方式获取设备的IMEI号码以进行电话差距查询?(How to get device IMEI number programmatically using xcode to phonegap?)
    问题 我想获取设备的Imei号并将其发送到phonegap html页面。 我们该怎么办? 在phonegap android中,我们将从Java文件中获取imei号,并将其发送到javascript文件中。 同样,我们将如何在iOS中进行操作? 回答1 正如rckoenes所述,您无法获得IMEI。 同样,您也无法获得可以链接到物理设备的任何ID(UDID,MAC地址)。 但是,如果您需要获取一个唯一的标识符,只要用户使用您的应用程序,该标识符将保持不变,则可以使用[UIDevice identifierForVendor]属性。 请注意,您不能将此标识符用于广告目的,而应使用[ASIdentifierManager advertisingIdentifier]属性(遵循AdSupport准则)。 回答2 您不能,Apple不允许您再标识设备。 自iOS 7以来,都不允许使用UDID和mac地址解决方案。 您在iOS上获取IMEI号码时可以找到的任何解决方案都需要使用私有库,并且您的应用将被拒绝使用。
  • 如何使用XCode以编程方式获取设备的IMEI号码以进行电话差距查询?(How to get device IMEI number programmatically using xcode to phonegap?)
    问题 我想获取设备的Imei号并将其发送到phonegap html页面。 我们该怎么办? 在phonegap android中,我们将从Java文件中获取imei号,并将其发送到javascript文件中。 同样,我们将如何在iOS中进行操作? 回答1 正如rckoenes所述,您无法获得IMEI。 同样,您也无法获得可以链接到物理设备的任何ID(UDID,MAC地址)。 但是,如果您需要获取一个唯一的标识符,只要用户使用您的应用程序,该标识符将保持不变,则可以使用[UIDevice identifierForVendor]属性。 请注意,您不能将此标识符用于广告目的,而应使用[ASIdentifierManager advertisingIdentifier]属性(遵循AdSupport准则)。 回答2 您不能,Apple不允许您再标识设备。 自iOS 7以来,都不允许使用UDID和mac地址解决方案。 您在iOS上获取IMEI号码时可以找到的任何解决方案都需要使用私有库,并且您的应用将被拒绝使用。
  • 如何以编程方式获取iOS设备MAC地址(How to get iOS device MAC address programmatically)
    问题 如何在我的应用中以编程方式获取iOS设备的MAC代码? 回答1 现在,iOS 7设备–始终返回02:00:00:00:00:00的MAC地址。 因此,最好使用[UIDevice identifierForVendor] 因此最好调用此方法以获取应用程序特定的唯一密钥 类别会更合适 #import "UIDevice+Identifier.h" - (NSString *) identifierForVendor1 { if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { return [[[UIDevice currentDevice] identifierForVendor] UUIDString]; } return @""; } 现在调用上面的方法来获取唯一的地址 NSString *like_UDID=[NSString stringWithFormat:@"%@", [[UIDevice currentDevice] identifierForVendor1]]; NSLog(@"%@",like_UDID); 回答2 您可以使用以下功能获取MAC地址: +(NSString *)getMacAddress { int mgmtInfoBase[6]
  • 是否有唯一的Android设备ID?(Is there a unique Android device ID?)
    问题 Android设备是否具有唯一的ID,如果是的话,使用Java访问它的简单方法是什么? 回答1 Settings.Secure#ANDROID_ID将Android ID作为每个用户的64位十六进制字符串的唯一值返回。 import android.provider.Settings.Secure; private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); 另请阅读唯一标识符的最佳做法:https://developer.android.com/training/articles/user-data-ids 回答2 更新:从Android的最新版本开始,与ANDROID_ID有关的许多问题已解决,我相信不再需要这种方法。 请看一下安东尼的回答。 全面披露:我的应用最初使用以下方法,但不再使用此方法,现在我们使用emmby的答案链接到的Android开发者博客条目中概述的方法(即,生成并保存UUID#randomUUID())。 这个问题有很多答案,大多数答案在某些时候只能用“一部分”,不幸的是,这还不够好。 根据我对设备的测试(所有电话,其中至少一个未激活): 所有测试的设备都返回TelephonyManager.getDeviceId
  • 如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?(How to get an IP address from Mac address programmatically on Android?)
    问题 以编程方式,我从同一网络上的设备获取了其他支持 Wifi 的设备的 Mac 地址。 同样我需要在这里申请。 是否有任何应用程序或任何其他可能性通过在 Android 上使用这些 Mac 地址来获取网络上每个启用 wifi 的设备的 IP 地址? 回答1 如果您正在寻找 Android 应用程序,您可以尝试网络发现,它工作得非常好,可以列出本地网络上具有相应 IP 和地址的所有设备。 如果您正在寻找代码,那么该应用程序可在 github 上获得,并且执行(除其他外)与 Yahel 解释的基本相同的事情:它读取 /proc/net/arp 。 注意:我不是此应用程序的作者。 回答2 这个人做的恰恰相反,所以它应该适合你。 诀窍是从设备读取 ARP 缓存表。 http://www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address-of-a-remote-host/
  • 如何在 Mac OS cocoa 中获取已安装 USB 设备的设备 ID、供应商 ID 和产品 ID(how to get Device id, vendor id and product id of a mounted usb device in Mac OS cocoa)
    问题 我正在尝试编写一个检测连接到 Mac OS 的 iPod 的 Cocoa 程序。 我正在听 NSWorkspaceDidMountNotification 和 NSWorkspaceDidUnmountNotification 以获取 USB 设备安装和卸载通知。 我可以使用 NSString *path = [[notif userInfo] objectForKey:@"NSDevicePath"]; 获取已安装设备的设备路径。 但我也不需要知道设备 ID、供应商 ID、产品 ID 等来检查安装的设备是否是 iPod。 我认为前进的方向是 IOKit。 但我有一种感觉,它适用于低级编程。 有没有其他方法可以找到这些? 另外,如果是 IO 套件,是否有任何示例程序可以在我提供挂载路径时提供 Id? 非常感谢。 回答1 我认为您可以通过以下方式获取产品和供应商 ID ioreg -p IOUSB -l -b | grep -E "@|idVendor|idProduct" 但不确定设备 ID。 也许 ioreg -p IOUSB -l -b | grep -E "@|idVendor|idProduct|bcdDevice" 对于我的 Arduino Uno,这些是我得到的信息: +-o Arduino Uno@14100000 <class AppleUSBDevice
  • android设备ID混乱(android device id confusion)
    问题 如果我拨打* # * # 8 2 5 5 # * # * ,我会得到以android- 35c2acdd...开头的android设备ID 35c2acdd... 资源 如果我使用Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)则结果以a96b4b27... 如果我使用((TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId()则结果以3538330... 这些ID之间有什么区别? 我如何获得结果 * # * # 8 2 5 5 # * # *拨号? 回答1 IMEI IMEI是电话模块的“ MAC”,即电话通过GSM / GPRS / HSPDA / etc连接时使用的唯一ID。 GSM网络使用它通过GSM网络将电话中的呼叫和数据直接路由到网关(进入IP网络)。 电话模块是处理GSM或CMDA电话网络的芯片或电路板,通常具有用于可移动SIM卡的插槽。 某些电话具有多个电话模块(有源双SIM卡或多SIM卡电话)。 每个电话模块都有自己的IMEI。 制造商在制造过程中会为每部电话(严格来说是电话模块)提供唯一的IMEI。 但是,如果您拥有正确的软件
  • 以编程方式接受牛轧糖中的呼叫(Programmatically accept call in Nougat)
    问题 从一年开始,我一直在研究物联网产品,所附的应用程序运行良好。 现在我无法在更高版本的 android 中以编程方式接受呼叫。 功能对产品非常重要。 任何帮助都受到高度赞赏。 在2016 年 11 月安全补丁更新之前, Runtime.getRunTime.exec("Command")工作正常,可以以编程方式接受调用。 Runtime.getRuntime().exec("input keyevent " +Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK)); 如何在 Android 的牛轧糖版本中使其成为可能。 寻找任何类型的黑客。 我已经为增强功能打开了一个线程。 https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=231938 注意*如果你们中的任何一个人面临同样的问题,那么请请求Android Dev Team参与进来并提供获得用户运行时许可的条款。 按照上面提到的 URL 请求。 回答1 由于我也在研究 IOT 产品,这是我面临的最大问题之¸
  • 如何获取连接到wifi热点的客户端设备详细信息?(How to get the client device details which is connected to wifi hotspot?)
    问题 我在我的android应用中以编程方式将不同的设备与wifi热点AP连接,如何检测以编程方式连接和断开连接的客户端以及wifi热点AP? Android API中是否有任何回调事件可提供有关单个设备的连接或断开连接事件的信息? 提前致谢。 回答1 不幸的是,没有公共API可以提供有关此信息...但是您可以阅读/ proc / net / arp文件并查看连接到您的接入点的客户端。 / proc / net / arp文件具有6个字段: IP地址,硬件类型,标志,硬件地址,掩码和设备 问题是客户端断开连接时,因为它不会从文件中消失。 解决方案可能是对每个客户端执行ping操作,然后等待响应,但是对我来说,这不是一个好的解决方案,因为某些客户端不响应ping 。 如果您喜欢此解决方案,请在GitHub上检查此项目-> https://github.com/nickrussler/Android-Wifi-Hotspot-Manager-Class/tree/master/src/com/whitebyte 我所做的是:读取/ proc / net / arp并检查FLAGS字段,当值为0x2时表示工作站已连接且0x0断开了连接,但是要刷新此字段,我需要不时清除ARP缓存,并且我用以下命令做到了: ip neigh flush all 我希望我能帮助你 回答2 此方法对我有效
  • 如何以编程方式在WinRT(Windows 8)中获取mac地址?(How to get the mac address in WinRT (Windows 8) programmatically?)
    问题 我正在寻找WinRT中的API来访问mac地址。 回答1 您无法按说检索MAC地址,但是您可以检索特定于硬件的信息来识别机器(如果您要这样做的话)。 这是一篇完整的msdn文章,讨论了该主题:使用特定于应用程序的硬件ID(ASHWID)来实现每个设备的应用程序逻辑的指导(Windows) 请小心使用仅所需的信息,而不要使用完整的ID,因为它可能会根据对您无用的信息(例如Dock Station字节)而变化。 这是一个基于几个字节(CPU ID,内存大小,磁盘设备的序列号和BIOS)的已计算设备ID的代码示例: string deviceSerial = string.Empty; // http://msdn.microsoft.com/en-us/library/windows/apps/jj553431 Windows.System.Profile.HardwareToken hardwareToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null); using (DataReader dataReader = DataReader.FromBuffer(hardwareToken.Id)) { int offset = 0; while (offset <
  • 如何确定Android设备唯一识别码
    文章目录 应用设备唯一识别码的解决方案方向一:使用硬件标识1. 使用 DEVICE_ID2. 使用 ANDROID_ID3. 使用 MAC ADDRESS4. 使用 SERIAL NUMBER5. 硬件标识的优势与局限性 方向二 使用UUID趋于完美的方案希望但又矛盾的完美方案名词解释 应用设备唯一识别码的解决方案 唯一标识必须满足两个特性才能完美解决定位唯一设备的问题,但这个问题的解决却注定只能极限接近完美 唯一性:标识必须在所有使用该应用的设备上保持唯一性不变性:标识必须在同一设备上保持不变 方向一:使用硬件标识 硬件标识实际上在硬件生产之时就被要求满足这两个特性(依然有人工生产的不确定性),但标识的获取趋于困难性,使得使用硬件标识作为唯一识别码的方案所能使用的范围越来越狭窄,不能作为全局方案使用。 1. 使用 DEVICE_ID TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String deviceId = tm.getDeviceId(); 2. 使用 ANDROID_ID String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)
  • 每个设备的Secure.ANDROID_ID是否唯一?(Is Secure.ANDROID_ID unique for each device?)
    问题 我正在使用此电话: Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 获取设备的UID。 我想我从多个设备上获得了相同的ID。 应该可以吗? 有问题的ID为:9774d56d682e549c,显然有多个设备返回此ID http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403 回答1 签入此线程。 但是,您应小心,因为它记录为“可以在恢复出厂设置时更改”。 使用时需要您自担风险,并且可以轻松地在有根电话上对其进行更改。 同样,似乎某些制造商的手机上有重复编号的线程时遇到了问题。 根据您的尝试,我可能不会将其用作UID。 回答2 使用Android O时,ANDROID_ID的行为将发生变化。 手机上每个用户的每个应用程序的ANDROID_ID都不同。 摘自:https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html Android ID 在O中,对于每个应用程序和设备上的每个用户,Android ID(Settings.Secure
  • RK3399学习
    RK3399学习 韦东山rk3399:http://dev.t-firefly.com/forum-460-1.html firefly官网教程:http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/started.html firefly官网3399资料:http://dev.t-firefly.com/forum-263-1.html 100ask 3399-pc教程:http://wiki.100ask.org/100ask_roc-rk3399-pc 韦东山全部资料网盘:http://download.100ask.org/?title=Download 如何编译安卓7.1固件:http://wiki.100ask.net/Roc-rk3399-pc_build_Android-7.1 工程建立 编译 Android7.1 industry 固件 编译准备: 下载 Android SDK Android SDK 源码包比较大,可以去下载页面来获取Android7.1源码包: 下载链接 下载完成后先验证一下 MD5 码: $ md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.001 afb279a7d2966908bcf53ce2c2c05edc rk3399-firefly
  • 蓝牙防丢器原理、实现与Android BLE接口编程
    本文是对已实现的蓝牙防丢器项目的总结,阐述蓝牙防丢器的原理、实现与Android客户端的蓝牙BLE接口编程。在这里重点关注如何利用BLE接口来进行工程实现,对于BLE的协议、涉及到JNI的BLE接口内部源码实现,笔者以后再详细剖析。但要求读者对BLE协议有一定的认识,如GAP、GATTprofile在BLE中的角色和作用,如何使用Service、Characteristic等。一、蓝牙防丢器原理和产品需求蓝牙防丢器的核心原理是根据接收到的蓝牙设备端的无线信号强度(RSSI)来估算距离。其计算公式是:d是计算距离,RSSI是信号强度,A为发射端和接收端相隔1米时的信号强度,n是环境衰减因子。对于不同的蓝牙设备该值是不一样的,同样的设备在不同的发射功率的情况下其信号强度也是不一样的,而且对于同是1米的情况下,环境对于信号强度也是有影响的。n是环境衰减因子,自然跟环境有关。所以在确切发射功率的情况下,A和n对于同一款设备来说,也是一个经验值。在实际的防丢器产品中,一般有以下功能:1. 当手机(接收端)检测到发射端设备的距离超过一定距离时,发出告警提示,设备根据告警级别进行相应的指示,如发出不同频率的音频或者闪灯。2. 当发射设备端发现和手机端建立的链路断开(意味着距离已经超过连接范围)时,其会自动发出某种形式的警告。 二、蓝牙防丢profile 笔者以业界目前功耗最低的蓝牙单芯片
  • 如何在Android上以编程方式配对蓝牙设备(How to programmatically pair a bluetooth device on Android)
    问题 对于我的应用程序,我正在尝试以编程方式配对蓝牙设备。 我可以显示要配对的设备的配对对话框,并且可以输入密码。 当我按“对”时,对话框将被删除,并且什么也没有发生。 我只需要支持Android 2.0及更高版本的设备。 目前,我正在使用以下代码开始配对进度: public void pairDevice(BluetoothDevice device) { String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST"; Intent intent = new Intent(ACTION_PAIRING_REQUEST); String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE"; intent.putExtra(EXTRA_DEVICE, device); String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT"; int PAIRING_VARIANT_PIN = 0; intent.putExtra(EXTRA_PAIRING_VARIANT, PAIRING_VARIANT_PIN); intent