如何检索 WiFi Direct MAC 地址?

2023-12-13

我正在尝试检索 Android 设备的 MAC 地址。如果 WiFi 已打开,这通常可以通过 WiFiManager API 实现。

如果 WiFi 关闭且 WiFi Direct 打开,有什么方法可以获取 MAC 地址吗? 我的手机上无法同时打开 WiFi 和 WiFi Direct。

Thanks


我在项目期间一直在寻找这个。我的要求是唯一地标识由 WiFi Direct 形成的自组织 P2p 网络中的设备。每个设备下次接近时都应该识别其朋友设备。我需要我自己的 WiFi(直连)MAC 和我朋友的 MAC 来为这个朋友区创建创建密钥。

我的研究:设计的方式是有一个唯一的通用ID和一个本地ID。Reason:通用 ID 只能用于连接到基础设施模式网络。本地 ID 可用于“ad-hoc”模式网络(设备到设备)。在这种自组织模式下,单个设备有可能同时属于多个自组织组。

  1. 因此,为了支持这种并发操作,P2p 设备支持 多个 MAC 实体,可能位于不同的通道上。
  2. 对于每个会话,持久组可以使用不同的通道和设备 每个会话的 MAC。
  3. P2P 设备在发现和协商期间使用其全局 MAC 地址作为设备 ID,并为组内的所有帧使用临时本地 MAC 地址。从这里理解

然而,没有直接的方法来获取自己的 WiFi P2p MAC 地址。问题 53437:Android.

在这个问题讨论中,谷歌的项目成员建议这是可能的,只是它还没有被记录下来

解决方案:使用意图过滤器WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION和额外的 从意图WifiP2pManager.EXTRA_WIFI_P2P_DEVICE

这就是我在我的项目中使用它的方式:

@Override
public void onReceive(Context context, Intent intent) {
....
....
String action = intent.getAction();

if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
            .equals(action)) {

        WifiP2pDevice device = (WifiP2pDevice) intent
                .getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);

        String myMac = device.deviceAddress;

        Log.d(TAG, "Device WiFi P2p MAC Address: " + myMac);

/* Saving WiFi P2p MAC in SharedPref */

        sharedPref = context.getSharedPreferences(context.getString(R.string.sp_file_name), Context.MODE_PRIVATE);
        String MY_MAC_ADDRESS = sharedPref.getString(context.getString(R.string.sp_field_my_mac), null);

        if (MY_MAC_ADDRESS == null || MY_MAC_ADDRESS != myMac) {
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putString(context.getString(R.string.sp_field_my_mac), myMac);
            editor.commit();
        }

希望这对某人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检索 WiFi Direct MAC 地址? 的相关文章

  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • D3.js 组件中的样式未显示在 Angular 2 中

    我正在使用 Angular 2 和 D3 js 我想显示一个红色矩形 仅当我将样式放入样式 css文件 查看这个笨蛋 当我将样式放入组件中时styles 这是行不通的 查看这个笨蛋 当我使用组件时如何让它工作styles Thanks UP
  • 向 Windows Phone 7 模拟器添加更多音乐?

    模拟器有大约 3 首歌曲 这不足以确保我正在开发的歌曲选择代码能够管理超过上述 3 首歌曲 所以只是想知道这是否可能 不幸的是 无法将歌曲添加到模拟器中 您必须使用真实设备来测试这一点
  • 如何用括号外的逗号分割字符串?

    我得到了这样格式的字符串 Wilbur Smith Billy son of John Eddie Murphy John Elvis Presley Jane Doe Jane Doe 所以基本上它是演员姓名列表 可选地在括号中加上他们的
  • 当源文件路径更改时,如何保持项目的数据库连接?

    我正在使用一个微软Access数据库在我的项目中 保存到bin文件夹 当文件路径更改时 我该怎么做才能确保与该数据库的连接 导入 System Data OleDb 公开课Form3 Dim con 作为新的 OleDb OleDbConn
  • 在所有库中导入应用程序兼容性依赖项

    我的应用程序中有 2 个模块 我想修改它们以使用 AppCompat 小部件 我必须用相同的方式扩展它们 问题是我不想向它们中的每一个添加 appcompat 依赖项 那么我怎么可能向这两个模块和我的应用程序添加依赖项 如果我添加 comp
  • 如何防止点击标签时页面刷新?

    我需要将一个参数传递到 URL 中 同时阻止页面在单击任何一个时重新加载 a 带有空白的标签href属性 a href 有没有办法用 JS jQuery 来做到这一点 我已经有了这个 jQuery list group item a cli
  • SQL 计数和组

    我有一个与此类似的 MySQL db 表 id date class more info one more info two etc 1 2017 05 03 1 2 2017 05 03 3 3 2017 05 11 1 4 2017 0
  • 在客户端验证行比使用整个主键的二级索引更好?

    在 cassandra 中 众所周知 应该非常谨慎地使用二级索引 例如 如果我有一张桌子 User username usertype email etc 这里的用户名是分区键 现在我想支持当且仅当 usertype 是特定值 X 时返回特
  • 接收方未注册异常错误?

    在我的开发者控制台中 人们不断报告一个错误 我无法在我拥有的任何手机上重现该错误 一个人留言说 当他们尝试打开我的电池服务的设置屏幕时 他收到了消息 正如您从错误中看到的 它表明接收器未注册 java lang RuntimeExcepti
  • Facebook API:所有朋友共享的所有链接?

    访问所有用户 Facebook 好友共享的链接的最实用方法是什么 我希望抓取由经过身份验证的用户的朋友共享的少数域的所有链接 有没有办法询问 域 X 的所有链接 所有链接 我将过滤域 X 或者我是否需要获取每个朋友并解析每个单独的提要 我假
  • T-SQL 读取带有命名空间的 xml 文件

    我尝试读取 sql server 中的 xml 文件 DECLARE XMLToParse XML Load the XML data in to a variable to work with This would typically b
  • TypeScript 2:非类型化 npm 模块的自定义类型

    尝试后发布的建议其他地方 我发现自己无法运行使用非类型化 NPM 模块的打字稿项目 下面是一个最小的示例和我尝试的步骤 对于这个最小的例子 我们假设lodash没有现有的类型定义 因此 我们将忽略该包 types lodash并尝试手动添加
  • 如何更改powershell控制台中的光标位置

    我目前将当前的 CursorPosition 分配给 Powershell 中的一个变量 以便在脚本中执行倒计时时可以覆盖相同的空间 如下所示 errorPos host UI RawUI CursorPosition for i 5 i
  • 在 Core Data 应用程序中更新 NSTableView 的正确方法

    我有一个带有 NSTableView 的核心数据项目 其中列绑定到 NSArrayController 反过来 控制器的内容绑定到 AppDelegate 的主要托管对象上下文 我对 NSTextFieldCell 进行了子类化 以提供更定
  • 访问和操作环境对象中的数组项

    我有一个EnvironmentObject我用来生成一个列表 class ActivityViewModel ObservableObject Published var Activities Activity init self Acti
  • Tableview的Plist搜索

    I have Plist它已填充在带有扩展部分的表格视图上 现在我想搜索表格 下面的图像中 您可以看到当我搜索任何内容时发生的情况 只是因为我正在搜索它 但需要对 cellforrowatindexpath 进行一些更改以获取搜索结果 请检
  • 在Java中按键排序HashMap的最佳方法?

    这是我第一次必须订购HashMap在爪哇 我需要按键执行此操作 但在我的情况下 键是一个对象 因此我需要按特定字段进行排序 尝试自己解决这个问题 我考虑继续编写这个简单的代码 private HashMap
  • 以 Map 作为主体的 Dart HTTP POST

    飞镖http包 s post方法只接受一个String a List
  • 同步期间出错:管道损坏 - 更新 Android Studio 3.2、3.3 后

    将 Android Studio 更新到 3 2 并解决同步 gradle 问题后Gradle 同步失败 将 Android Studio 更新到 3 2 后 我无法安装apk 事件日志 Error during Sync Broken p
  • 如何检索 WiFi Direct MAC 地址?

    我正在尝试检索 Android 设备的 MAC 地址 如果 WiFi 已打开 这通常可以通过 WiFiManager API 实现 如果 WiFi 关闭且 WiFi Direct 打开 有什么方法可以获取 MAC 地址吗 我的手机上无法同时