首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用NotificationListenerService android获取Whatsapp的联系方式?

使用NotificationListenerService可以监听Android设备上的通知,并获取通知的内容。要获取WhatsApp的联系方式,可以通过以下步骤:

  1. 创建一个继承自NotificationListenerService的类,并在AndroidManifest.xml文件中声明该服务。
代码语言:txt
复制
public class MyNotificationListenerService extends NotificationListenerService {
    // 实现相关方法
}
  1. 在该类中重写onNotificationPosted方法,该方法会在每次有新通知发布时被调用。
代码语言:txt
复制
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
    if (sbn.getPackageName().equals("com.whatsapp")) {
        // 获取WhatsApp通知的联系方式
        String contact = sbn.getNotification().extras.getString(Notification.EXTRA_TITLE);
        // 处理联系方式
        // ...
    }
}
  1. 在AndroidManifest.xml文件中声明NotificationListenerService。
代码语言:txt
复制
<service
    android:name=".MyNotificationListenerService"
    android:label="Notification Listener"
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
        <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
</service>
  1. 在应用中请求用户授权,以允许访问通知。
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 123;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 请求用户授权
        if (!isNotificationServiceEnabled()) {
            Intent intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
            startActivityForResult(intent, REQUEST_CODE);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            if (isNotificationServiceEnabled()) {
                // 用户已授权
                // 启动NotificationListenerService
                startService(new Intent(this, MyNotificationListenerService.class));
            } else {
                // 用户未授权
                // 提示用户授权
            }
        }
    }

    private boolean isNotificationServiceEnabled() {
        String packageName = getPackageName();
        String flat = Settings.Secure.getString(getContentResolver(), "enabled_notification_listeners");
        if (flat != null) {
            return flat.contains(packageName);
        }
        return false;
    }
}

通过以上步骤,你可以在NotificationListenerService中获取WhatsApp通知的联系方式,并进行相应的处理。请注意,这只是获取通知内容的一种方式,具体的处理方式可能因WhatsApp应用的更新而有所变化。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动推送:https://cloud.tencent.com/product/umeng_push
  • 腾讯云移动分析:https://cloud.tencent.com/product/ma
  • 腾讯云移动测试:https://cloud.tencent.com/product/mta
  • 腾讯云移动应用安全:https://cloud.tencent.com/product/ms
  • 腾讯云移动应用托管:https://cloud.tencent.com/product/baas
  • 腾讯云移动应用开发平台:https://cloud.tencent.com/product/madp
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 如何获取有效DeviceId

google也给出了一个解决方案 许多使用场景都不需要不可重置设备标识符。例如,如果您应用将不可重置设备标识符用于广告跟踪或用户分析目的,请为这些特定使用场景使用 Android 广告 ID。...要在 OTA 后在卸载期间保留值,开发者可以使用密钥/值备份关联旧值和新值。 对于安装在运行 Android 8.0 设备上应用,ANDROID_ID 值现在将根据应用签署密钥和用户确定作用域。...当然还有其他bug,比如有些厂家获取为null之类。 所以,ANDROID_ID是可以考虑选择之一,后面细说。...这样可以做一个版本判断,低于10.0(或8.0)获取DeviceId,否则获取ANDROID_ID Mac地址 如果上面两步获取还是null,那么可以使用mac地址,但是mac由于6.0之后无法通过WifiInfo.getMacAddress...目前来看,各手机厂商指导方案也就这几个方案。 补充 除了上面的方案,还有移动安全联盟(信通院牵头)提供sdk,可以获取几种设备标识符,大部分国内厂商都支持。 不过需要申请使用,还没测试过。

6.6K30

安卓应用安全指南 4.10 使用通知

下面展示了示例代码,说明了如何正确将通知用于包含私人数据消息。 要点: 1) 将通知用于包含私人数据消息,请准备适合公开显示通知版本(屏幕锁定时显示)。...,通知都不得包含敏感信息(尽管私有信息是例外情况)(必需) 在使用 Android 4.3(API 级别 18)或更高版本终端上,用户可以使用“设置”窗口,授予应用读取通知权限。...在使用 Android 4.3(API 级别 18)或更高版本终端上,用户可以使用“设置”窗口,授予应用读取通知权限,授予此权限应用将能够读取通知中所有信息;因此,除私有用户信息以外敏感信息不得包含在通知中...如上面“4.10.2.1 无论可见性设置如何,通知不得包含敏感信息(尽管私人信息是例外)”所述,在使用 Android 4.3(API Level 18)或更高版本终端上,某些用户选择应用,已被授予用户权限...NotificationListenerService获取用户权限,可以读取通知。

81720

android 如何获取手机图片、视频、音乐

android 开发中,很多时候,我们会需要调用到用户本机照片、视频或者是音乐让用户选择,来进行我们APP对应操作。...intent.setType(“audio/*”); //选择音频 10 11 //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android...(Intent.createChooser(photoPickerIntent, "Select"),1);使用 createChooser()打开好处是,程序会自动弹出一个对话框,对话框名字可以自己设置...,我demo 里设置是 Select,弹出这个框,作用是让用户选择,基于本机手机已经安装了,能够打开当前文件 应用。...还一种方法是,默认直接打开: startActivityForResult(photoPickerIntent,1); 这种方法有时候会显示不出来,原因是,程序运行时候,检测到本机有多个音乐或者图片总体类型

1.7K50

SystemUI 开发之通知实现逻辑(四)

0x00 介绍 今天我们来看一下 SystemUI中系统通知实现流程,希望能解决一个问题:系统通知是如何完成监听然后显示在通知栏?...本文将此出发看看系统通知是如何实现。...这里会涉及以下一些知识点: SystemUI 应用是如何监听系统通知 通知 UI是如何构建 本文代码是基于Android 10 来分析 0x01 监听系统通知实现过程 StatusBar 创建...在这个方法里面通过 Dependency组件获取到 mNotificationListener实例,通过它进行注册系统通知监听,这一步非常关键,这里涉及到 Binder通信,这里建立了SystemUI...AsyncLayoutInflater这个异步创建布局接口来实现 这个接口是 androidx里面的标准接口,对一些复杂控件可以使用此接口提高创建效率 https://developer.android.com

81830

AndroidNotification机制深入理解

我研究 Notification 机制目的是解决以下我在使用过程中所思考问题: 我们创建 Notification 实例最终以什么样方式发送给系统?...系统是如何接收到 Notification 实例并显示? 我们是否能拦截其他 app Notification 并获取其中信息? 什么是 Android Notification 机制?...在实际生活中,Android Notification 机制有很广泛应用,例如 IM app 新消息通知,资讯 app 新闻推送等等。 源码分析 本文源码基于 Android 7.0。...这种实现方法就是基于我们熟悉一种设计模式:监听者模式。 Q:系统是如何获取到 Notification 实例并显示?...Q:我们是否能拦截 Notification 并获取其中信息?

1.2K40

如何使用AndroidQF快速从Android设备中获取安全取证信息

关于AndroidQF AndroidQF,全称为Android快速取证(Android Quick Forensics)工具,这是一款便携式工具,可以帮助广大研究人员快速从目标Android设备中获取相关信息安全取证数据...AndroidQF旨在给广大研究人员提供一个简单且可移植跨平台实用程序,以快速从Android设备获取信息安全取证数据。...它功能有些类似于mvt-android,但是跟MVT相比,AndroidQF优势就在于它可以让很多不懂技术用户也能够轻松地使用。...工具使用 在启动AndroidQF之前, 我们需要将目标Android设备通过USB线连接到我们主机上,别忘了开启USB调试功能。 启动USB调试之后,我们就可以继续启动AndroidQF了。...获取到加密取证文件之后,我们可以使用下列方式进行解密: $ age --decrypt -i ~/path/to/privatekey.txt -o .zip .zip.age

7K30

android如何使用Android搜索框架

当你需要在你应用程序中提供搜索服务时,通过使用Android搜索框架,应用程序将显示一个自定义搜索对话框来处理用户搜索请求。...通过一个简单搜索按钮或从您应用程序中调用API,搜索对话框就会显示在屏幕顶部,并会自动显示应用程序图标。 本文将教你如何为你应用程序提供一个自定义搜索对话框。...android:hint是配置搜索框输入提示信息,也必须引用string.xml中配置字符串资源,不能直接使用字符串。...可以配置很多属性,但大部分属性都只是在使用搜索建议和语音搜索时进行配置,尽管如此,我们建议你一定要配置android:hint,用于提示用户需要输入信息。...= null) { boolean jargon = appData.getBoolean(MySearchableActivity.JARGON); } 最后我们来看看如何使用android

73330

Android如何获取系统通知开启状态详解

前言 大家应该都有所体会,平常在android应用中,有时候会用到系统通知是否开启状态,以便进行下一步操作,所以,获取到状态是很有必要,之前一直苦于找不到合适方法来解决,因为毕竟涉及到系统,不好办...,今日看到大神支招,试了一下,很好用,话不多少了,来一起看看详细介绍吧。...有图有真相,首先到设置里边关闭该应用通知开关: ? 然后在应用中,点击按钮,获取状态: ? 这时候,回到设置里,打开通知按钮: ? 再次点击应用中测试按钮,可以看到,通知已经可用了: ?...} catch (IllegalAccessException e) { e.printStackTrace(); } return false; } } 总结 好了,以上就是这篇文章全部内容了...,希望本文内容对大家学习或者工作能带来一定帮助,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

1.4K30

Android使用CrashHandler来获取应用crash信息方法

在日常开发过程中应该不可避免会发生 crash,无论你程序写多么完美,都不可能完全避免 crash 发生,可能是由于 Android 底层 bug,也可能是由于不充分机型适配或者是糟糕网络状况...方法中就可以获取到异常信息,可以选择把异常信息存储下来,存储方式大家可以自己选择,然后在合适时候通过网络将 crash 信息上传到服务器上,这样我们开发人员就可以分析用户 crash 场景从而在后面的版本中进行修复...(this); //获取Context,方便内部使用 mContext = context.getApplicationContext(); } /** * 这个是最关键函数,当程序中有未被捕获异常...,那么就自行中止,当然而又可以选择将异常信息上传到服务器,这里我们没有实现这个逻辑,实际开发中都需要将异常信息上传到服务器 三、如何使用 CrashHandler 其实使用 CrashHandler 也非常简单...,比较适合有一定 Android 基础同学,马上就是国庆小长假了,祝大家国庆节愉快 以上就是本文全部内容,希望对大家学习有所帮助。

1.1K41

Android NotificationListenerService使用方式(详细步骤+源码)

NotificationListenerService 通知监听服务,就是监听手机上广播通知,这个在纯App开发中用比较少,但是在智能穿戴领域用很多,比如我有一个智能手表,然后有一个配套App应用...先看看效果图: 正文   下面进入正式使用,我先说一下使用思路,NotificationListenerService 是一个服务,服务更多是在后台运行,其次由于这个需要进行通知监听,会涉及到一个动态权限请求...)); } } } 这个类继承了NotificationListenerService,里面里面几个方法,都已经注释过了,这里设置通知栏上应用包名,由于国产厂商对于Android...不过QQ和微信这种App包名是固定,可以放心使用。 下面将这个服务注册在AndroidManifest.xml中。...,我这里使用接口回调方式来进行。

3.9K41

Android 系统剪贴板使用 - 复制、获取和清空

ClipboardManager: 表示一个剪贴板 ClipData: 剪贴板中保存所有剪贴数据集(剪贴板可同时复制/保存多条多种数据条目) ClipData.Item: 剪贴数据集中一个数据条目...复制内容 /** * 实现文本复制功能 * * @param content 复制文本 */ public static void copy(String content) { if...ClipData.newPlainText(null, content); // 把数据集设置(复制)到剪贴板 cmb.setPrimaryClip(clipData); } } 获取系统剪贴板内容.../** * 获取系统剪贴板内容 */ public static String getClipContent() { ClipboardManager manager = (ClipboardManager...// 获取系统剪贴板 ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE

1.5K30

Android 系统剪贴板使用 - 复制、获取和清空

ClipboardManager: 表示一个剪贴板 ClipData: 剪贴板中保存所有剪贴数据集(剪贴板可同时复制/保存多条多种数据条目) ClipData.Item: 剪贴数据集中一个数据条目...复制内容 /** * 实现文本复制功能 * * @param content 复制文本 */ public static void copy(String content) { if...ClipData.newPlainText(null, content); // 把数据集设置(复制)到剪贴板 cmb.setPrimaryClip(clipData); } } 获取系统剪贴板内容.../** * 获取系统剪贴板内容 */ public static String getClipContent() { ClipboardManager manager = (ClipboardManager...// 获取系统剪贴板 ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE

5.6K20
领券