实例详解android studio如何导入.so文件的方法
下面是通过自己写的一个demo,绝对不是官方demo,来给大家讲述了如何在android studio如何导入.so文件的流程和方法,欢迎大家在下方留言讨论指正。
1,android studio如何加载极光推送的jar包和.so库文件.
2,如何获取附加字段里的键对应的值.
3,如何点击通知栏通知进入webview加载页面.
4,如何把推送过来的消息进行存储,并以listview显示,便于查看推送历史.
5,如何点击listview的item,进行网页跳转,再次进入webview加载页面.
6,如何为推送设置免打扰时段.(copy官方demo).
7,属性动画效果.
我能写出这篇文章,也是被极光推送虐了很多遍,就在我要放弃的时候,终于发现了问题所在,这个问题说白了还是我是粗心导致的.至于什么问题,一会再说.
这篇文章结尾有我自己写的一个demo,大家可以去下载看看,就是下载积分有点多,绝对不是官方自动生成的demo,要说唯一的相同点,就是设置免打扰时段是直接复制过来的,之前被极光折磨时,也找了很多demo子看看,但是那些demo要么是官方原版,要么是稍微改动一下,依然换汤不换药.还花了我很多积分,并且标题还说是自己写的demo,我就呵呵了,真的很没有良心,我的这个demo不能说多好,但至少不是官方demo并且界面做的还算可以,至少我自己这样认为.再说一点,我的demo或者这篇文章,差不多适合想用极光推送但不知从何下手的新手,或者像我这样被虐了很多遍的人,如果你想问服务器端怎么写,那这篇文章和demo不适合你,估计你的水平已超过了我,这篇文章主要说利用普通推送,废话说完,进入正题.
首先明确一下,想要接收到极光的推送,至少做到什么程度才能接收到或者不报错.有人说官方给的demo里的类我需要完全拷贝吗,或者说我需要拷贝几个才行?那现在我告诉你,官方demo里的类其实1个都不拷贝也能接收到,但前提在于把manifest.xml清单文件配置好才行.下面进入第一点:
1,android studio如何加载极光推送的jar包和.so库文件.
到极光推送的官网上把关于android版本的推送sdk下载并解压,如下图:
liibs目录里存放的是推送的jar包和支持手机架构的后缀为.so的库文件,res目录里存放的是一些xml文件,和一些图片,这些文件时为了接收富媒体消息用的,res目录里的文件直接拷贝到相应目录即可,libs目录里的文件就是要主要讲的.
这里面默认的包含了arm架构的各种版本,如果你的手机或者模拟器的系统架构是x86或者mip的,可以去极光官网下载对应版本,还有一个极光推送sdk 的jar包,android studio如何集成jar文件我之前有篇博客已经说了,可以翻翻我之前的博客,现在只剩下.so库文件怎么加载了,我之前也找了好多种方法,但是最后还是只有1种有用,那就是极光官网提供的那个方法,:如下图:
完成以上两步就配置好了jar包和.so库文件,本人亲测可用.
2,如何获取附加字段里的键对应的值.打开极光推送官方文档.如下图:
以上2个action和3个常量就能完成客户端接收推送部分百分之80的部分,而我的demo就是根据这2个action和3个常量做出来的,下面是具体怎么使用这些action和常量的截图:
3,3,如何点击通知栏通知进入webview加载页面.
实现点击通知栏通知进入webview加载页面,首先得监听点击了通知这个action,并且你得有一个webview界面,如下图.
4,如何把推送过来的消息进行存储,并以listview显示,便于查看推送历史.
最终listview显示的item是这种样式:
5,如何点击listview的item,进行网页跳转,再次进入webview加载页面.
这个就简单了,直接监听onitemclick事件即可:如下图:
6,如何为推送设置免打扰时段.
直接copy官方demo,没啥可说的,参见官方demo
7,属性动画效果.
这个也是我上篇博客说过的,可以翻翻看,我直接把上篇博文的例子当做我这次demo的主界面,看起来还是不错的.
之前说到我被虐,其实都是粗心大意引起的,我在配置manifest.xml文件时,少配置一个包名,一直给我报空指针错误,后来发现之后,改了,就一切ok了,关键还是得细心.,这里展示一下自己已修复好的完整清单文件.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.jiguangpush" android:versioncode="181" android:versionname="1.8.1"> <!--总共有7个地方需要配置包名,一定不要配置少了!!!!!!!!!!!!!!!!!!!!!--> <!-- required 自定义用来收发消息的相关权限 --> <permission android:name="com.example.administrator.jiguangpush.permission.jpush_message" android:protectionlevel="signature"/> <!-- required 一些系统要求的权限,如访问网络等 --> <uses-permission android:name="com.example.administrator.jiguangpush.permission.jpush_message"/> <uses-permission android:name="android.permission.receive_user_present"/> <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.wake_lock"/> <uses-permission android:name="android.permission.read_phone_state"/> <uses-permission android:name="android.permission.write_external_storage"/> <uses-permission android:name="android.permission.read_external_storage"/> <uses-permission android:name="android.permission.write_settings"/> <uses-permission android:name="android.permission.vibrate"/> <uses-permission android:name="android.permission.mount_unmount_filesystems"/> <uses-permission android:name="android.permission.access_network_state"/> <uses-permission android:name="android.permission.system_alert_window"/> <!-- optional for location --> <uses-permission android:name="android.permission.access_coarse_location"/> <uses-permission android:name="android.permission.access_wifi_state"/> <uses-permission android:name="android.permission.change_wifi_state"/> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.access_location_extra_commands"/> <uses-permission android:name="android.permission.change_network_state"/> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme"> <activity android:name=".mainactivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main"/> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> <!-- required sdk核心功能 直接拷贝 --> <activity android:name="cn.jpush.android.ui.pushactivity" android:configchanges="orientation|keyboardhidden" android:exported="false"> <intent-filter> <action android:name="cn.jpush.android.ui.pushactivity"/> <category android:name="android.intent.category.default"/> <category android:name="com.example.administrator.jiguangpush"/> </intent-filter> </activity> <!-- required sdk核心功能 直接拷贝 --> <service android:name="cn.jpush.android.service.downloadservice" android:enabled="true" android:exported="false"> </service> <!-- required sdk 核心功能 直接拷贝 --> <service android:name="cn.jpush.android.service.pushservice" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="cn.jpush.android.intent.register"/> <action android:name="cn.jpush.android.intent.report"/> <action android:name="cn.jpush.android.intent.pushservice"/> <action android:name="cn.jpush.android.intent.push_time"/> </intent-filter> </service> <!-- 可不拷贝 since 1.8.0 option 可选项。用于同一设备中不同应用的jpush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.daemonservice" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="cn.jpush.android.intent.daemonservice"/> <category android:name="com.example.administrator.jiguangpush"/> </intent-filter> </service> <!-- required sdk核心功能 直接拷贝 --> <receiver android:name="cn.jpush.android.service.pushreceiver" android:enabled="true" android:exported="false"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.notification_received_proxy"/> <!-- required 显示通知栏 --> <category android:name="com.example.administrator.jiguangpush"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.user_present"/> <action android:name="android.net.conn.connectivity_change"/> </intent-filter> <!-- optional --> <intent-filter> <action android:name="android.intent.action.package_added"/> <action android:name="android.intent.action.package_removed"/> <data android:scheme="package"/> </intent-filter> </receiver> <!-- required sdk核心功能 直接拷贝 --> <receiver android:name="cn.jpush.android.service.alarmreceiver"/> <receiver android:name=".myreceiver" android:enabled="true" android:exported="false"> <intent-filter> <action android:name="cn.jpush.android.intent.registration"/> <!-- required 用户注册sdk的intent --> <action android:name="cn.jpush.android.intent.unregistration"/> <action android:name="cn.jpush.android.intent.message_received"/> <!-- required 用户接收sdk消息的intent --> <action android:name="cn.jpush.android.intent.notification_received"/> <!-- required 用户接收sdk通知栏信息的intent --> <action android:name="cn.jpush.android.intent.notification_opened"/> <!-- required 用户打开自定义通知栏的intent --> <action android:name="cn.jpush.android.intent.action_richpush_callback"/> <!-- optional 用户接受rich push javascript 回调函数的intent --> <action android:name="cn.jpush.android.intent.connection"/> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <category android:name="com.example.administrator.jiguangpush"/> </intent-filter> </receiver> <!-- required . enable it you can get statistics data with channel 要求填写appkey再拷贝 --> <meta-data android:name="jpush_channel" android:value="developer-default"/> <meta-data android:name="jpush_appkey" android:value="649d75504a154477a4aaeb32"/> <!-- </>值来自开发者平台取得的appkey --> <activity android:name=".notificationlistactivity" android:label="@string/title_activity_second"> </activity> <activity android:name=".pushtextactivity" android:label="@string/title_activity_push_text"> </activity> <activity android:name=".setfreetimeactivity" android:label="@string/title_activity_set_free_time"> </activity> <activity android:name=".webviewactivity" android:label="@string/title_activity_web_view"> </activity> </application> </manifest>
再说一下,服务器界面我只用到普通消息进行发送,自定义消息和富媒体消息都没用,最后在上一张服务器发送普通消息的图:
以上就是本次教程的全部内容,需要的朋友跟着测试一下吧,可以把结果反馈给我们,也欢迎大家踊跃投稿。
下一篇: 【剑指Offer】反转链表
推荐阅读
-
android studio怎么添加.so文件?android studio加载so文件的方法
-
Android Studio导入Project与Module的方法及实例
-
详解Android studio如何导入jar包方法
-
Android Studio中导入JNI生成的.so库的实现方法
-
详解Android Studio如何导入第三方类库、jar包和so库
-
实例详解android studio如何导入.so文件的方法
-
Android Studio导入Project与Module的方法及实例
-
Android Studio工程引用第三方so文件的方法
-
如何利用php读取子目录下所有文件名的方法实例详解
-
如何利用php读取子目录下所有文件名的方法实例详解