IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 11 解决跨应用绑定Service失败 -> 正文阅读

[移动开发]Android 11 解决跨应用绑定Service失败

????????问题描述:安卓系统升级到11后,调用bindService一直返回flase,测试低版本正常。那么需要研究一下新版本特性。

1,管理软件包可见性

??????声明您的应用与一组特定的其他应用交互

????????如果您的应用以 Android 11(API 级别 30)或更高版本为目标平台,并且需要与应用(自动可见的应用除外)交互,请在您应用的清单文件中添加?<queries>?元素。在?<queries>?元素中,按软件包名称按 intent 签名按提供程序授权指定其他应用,如以下部分所述。

????????查询特定软件包及与之交互

????????如果您知道要查询或与之交互的一组特定应用(例如,与您的应用集成的应用或您使用其服务的应用),请将其软件包名称添加到?<queries>?元素内的一组?<package>?元素中:

<manifest package="com.cqrcb.test">
    <queries>
        <package android:name="com.cqrcb.paymentsdke" />
    </queries>
    ...
</manifest>

??????在给定 intent 过滤器的情况下查询应用及与之交互

????????您的应用可能需要查询一组具有特定用途的应用或与之交互,但您可能不知道要添加的具体软件包名称。在这种情况下,您可以在?<queries>?元素中列出?intent 过滤器签名。然后,您的应用就可以发现具有匹配的?<intent-filter>?元素的应用。

<manifest package="com.cqrcb.test">
    <queries>
        <intent>
            <action android:name="com.cqrcb.payment.service" />
        </intent>
    </queries>
    ...
</manifest>

? 2,解决问题

? ? ? ? 这里只展示部分代码,重点展示如何设置软件包可见性。?

????????服务端AndroidManifest.xml配置

    <service
        android:name="com.cqrcb.paymentsdk.services.AidlSService"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="com.cqrcb.payment.service" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </service>

? ? 客户端跨应用启动Service服务

    private void bindAidlService() {
        Intent intent = new Intent();
        intent.setAction("com.cqrcb.payment.service");
        intent.setPackage("com.cqrcb.paymentsdk");
        boolean result = bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
        Log.i(TAG, "bindAidlService: " + result);
    }

? ?AndroidManifest.xml配置软件包可见性

? ?package 对应服务端的包名

? ?action 对应服务端的name

    <queries>
        <package android:name="com.cqrcb.paymentsdk" />
        <intent>
            <action android:name="com.cqrcb.payment.service" />
        </intent>
    </queries>

? ? 设置完再启动Service会发现还是不行,还需要把服务端设置为自启动

? ? ?如果遇到添加queries报错,需要升级gradle与build版本

?总结一下就是在客户端设置软件包可见性、服务端设置为自启动。

?发现问题还是得查官方,最后附上文档:?管理软件包可见性 ?|? Android 开发者 ?|? Android Developers

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:19:09  更:2022-03-17 22:19:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 19:13:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码