您好,欢迎来到源码搜藏网!分享精神,快乐你我!
[加入VIP] 设为首页 | 收藏本站 | 网站地图 | Sitemap | TAG标签
  • 首 页
  • 在线工具
  • jquery手册
  • 当前位置:首页 > 安卓源码 > 技术博客 >

    如何在Android中以编程方式在运行时注册系统广播接收器

    时间:2018-08-09 15:38 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

    问题 - 在定位API 24+时注册连接更改 并非所有Android广播都是平等创建的,并且在所有情况下都无法在清单中创建它们。 由于Google对针对N(API 24)的应用所做的更改,您必须在运行时配置一些内容。 从 文档中 :针对Android 7.0(API级别24)及更高版本的应

    问题 - 在定位API 24+时注册连接更改

    并非所有Android广播都是平等创建的,并且在所有情况下都无法在清单中创建它们。由于Google对针对N(API 24)的应用所做的更改,您必须在运行时配置一些内容。

    文档中:针对Android 7.0(API级别24)及更高版本的应用程序CONNECTIVITY_ACTION如果在清单中声明其广播接收器,则不会接收广播。

    解决方案

    文档并不清楚如何处理这个问题,因此这里的代码允许您的应用在定位N或更高版本后仍然接收连接更改广播:

    public void onCreate() {
        ...
        //Change 'YourConnectionChangedBroadcastReceiver' 
        //to the class defined to handle the broadcast in your app
        registerReceiver(new YourConnectionChangedBroadcastReceiver(), 
        new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
        ...
    }

    我还建议从AndroidManifest.xml中删除声明,就好像你把它留在那里一样,它实际上会创建你的广播接收器的多个实例。

    <receiver android:name="YourConnectionChangedBroadcastReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>

    以编程方式注册可以解锁接收器以供您的应用程序使用(包括CONNECTIVITY_ACTION清单中的那些),这就是它的全部内容。您可以保存已注册的接收器实例,并在不再需要时注销它,但是,如果它持续应用程序的整个生命周期,则不需要这样做。

    如何在Android中以编程方式在运行时注册系统广播接收器转载http://www.codesocang.com/appboke/38813.html
    标签:网站源码