實例詳解android studio如何導入.so文件的方法
下面是通過自己寫的一個demo,絕對不是官方demo,來給大家講述了如何在android studio如何導入.so文件的流程和方法,歡迎大家在下方留言討論指正。
1,android studio如何加載極光推送的jar包和.so庫文件.
2,如何獲取附加字段里的鍵對應的值.
3,如何點擊通知欄通知進入webView加載頁面.
4,如何把推送過來的消息進行存儲,并以listView顯示,便于查看推送歷史.
5,如何點擊listView的item,進行網(wǎng)頁跳轉(zhuǎn),再次進入webView加載頁面.
6,如何為推送設(shè)置免打擾時段.(copy官方demo).
7,屬性動畫效果.
我能寫出這篇文章,也是被極光推送虐了很多遍,就在我要放棄的時候,終于發(fā)現(xiàn)了問題所在,這個問題說白了還是我是粗心導致的.至于什么問題,一會再說.
這篇文章結(jié)尾有我自己寫的一個demo,大家可以去下載看看,就是下載積分有點多,絕對不是官方自動生成的demo,要說唯一的相同點,就是設(shè)置免打擾時段是直接復制過來的,之前被極光折磨時,也找了很多demo子看看,但是那些demo要么是官方原版,要么是稍微改動一下,依然換湯不換藥.還花了我很多積分,并且標題還說是自己寫的demo,我就呵呵了,真的很沒有良心,我的這個demo不能說多好,但至少不是官方demo并且界面做的還算可以,至少我自己這樣認為.再說一點,我的demo或者這篇文章,差不多適合想用極光推送但不知從何下手的新手,或者像我這樣被虐了很多遍的人,如果你想問服務(wù)器端怎么寫,那這篇文章和demo不適合你,估計你的水平已超過了我,這篇文章主要說利用普通推送,廢話說完,進入正題.
首先明確一下,想要接收到極光的推送,至少做到什么程度才能接收到或者不報錯.有人說官方給的demo里的類我需要完全拷貝嗎,或者說我需要拷貝幾個才行?那現(xiàn)在我告訴你,官方demo里的類其實1個都不拷貝也能接收到,但前提在于把manifest.xml清單文件配置好才行.下面進入第一點:
1,android studio如何加載極光推送的jar包和.so庫文件.
到極光推送的官網(wǎng)上把關(guān)于android版本的推送sdk下載并解壓,如下圖:
liibs目錄里存放的是推送的jar包和支持手機架構(gòu)的后綴為.so的庫文件,res目錄里存放的是一些xml文件,和一些圖片,這些文件時為了接收富媒體消息用的,res目錄里的文件直接拷貝到相應目錄即可,libs目錄里的文件就是要主要講的.
這里面默認的包含了arm架構(gòu)的各種版本,如果你的手機或者模擬器的系統(tǒng)架構(gòu)是x86或者mip的,可以去極光官網(wǎng)下載對應版本,還有一個極光推送sdk 的jar包,android studio如何集成jar文件我之前有篇博客已經(jīng)說了,可以翻翻我之前的博客,現(xiàn)在只剩下.so庫文件怎么加載了,我之前也找了好多種方法,但是最后還是只有1種有用,那就是極光官網(wǎng)提供的那個方法,:如下圖:
完成以上兩步就配置好了jar包和.so庫文件,本人親測可用.
2,如何獲取附加字段里的鍵對應的值.打開極光推送官方文檔.如下圖:
以上2個action和3個常量就能完成客戶端接收推送部分百分之80的部分,而我的demo就是根據(jù)這2個action和3個常量做出來的,下面是具體怎么使用這些action和常量的截圖:
3,3,如何點擊通知欄通知進入webView加載頁面.
實現(xiàn)點擊通知欄通知進入webView加載頁面,首先得監(jiān)聽點擊了通知這個action,并且你得有一個webView界面,如下圖.
4,如何把推送過來的消息進行存儲,并以listView顯示,便于查看推送歷史.
最終listView顯示的item是這種樣式:
5,如何點擊listView的item,進行網(wǎng)頁跳轉(zhuǎn),再次進入webView加載頁面.
這個就簡單了,直接監(jiān)聽onItemClick事件即可:如下圖:
6,如何為推送設(shè)置免打擾時段.
直接copy官方demo,沒啥可說的,參見官方demo
7,屬性動畫效果.
這個也是我上篇博客說過的,可以翻翻看,我直接把上篇博文的例子當做我這次demo的主界面,看起來還是不錯的.
之前說到我被虐,其實都是粗心大意引起的,我在配置manifest.xml文件時,少配置一個包名,一直給我報空指針錯誤,后來發(fā)現(xiàn)之后,改了,就一切ok了,關(guān)鍵還是得細心.,這里展示一下自己已修復好的完整清單文件.
<?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 自定義用來收發(fā)消息的相關(guān)權(quán)限 --> <permission android:name="com.example.administrator.jiguangpush.permission.JPUSH_MESSAGE" android:protectionLevel="signature"/> <!-- Required 一些系統(tǒng)要求的權(quán)限,如訪問網(wǎng)絡(luò)等 --> <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 可選項。用于同一設(shè)備中不同應用的JPush服務(wù)相互拉起的功能。 --> <!-- 若不啟用該功能可刪除該組件,將不拉起其他應用也不能被其他應用拉起 --> <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 回調(diào)函數(shù)的intent --> <action android:name="cn.jpush.android.intent.CONNECTION"/> <!-- 接收網(wǎng)絡(luò)變化 連接/斷開 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"/> <!-- </>值來自開發(fā)者平臺取得的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>
再說一下,服務(wù)器界面我只用到普通消息進行發(fā)送,自定義消息和富媒體消息都沒用,最后在上一張服務(wù)器發(fā)送普通消息的圖:
以上就是本次教程的全部內(nèi)容,需要的朋友跟著測試一下吧,可以把結(jié)果反饋給我們腳本之家,也歡迎大家踴躍投稿。
相關(guān)文章
android實現(xiàn)狀態(tài)欄添加圖標的函數(shù)實例
這篇文章主要介紹了android實現(xiàn)狀態(tài)欄添加圖標的函數(shù),較為詳細的分析了Android狀態(tài)欄添加及刪除圖標的具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android studio4.1更新后出現(xiàn)的問題詳解
這篇文章主要介紹了Android studio4.1更新后出現(xiàn)的問題詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10Android編程實現(xiàn)通訊錄中聯(lián)系人的讀取,查詢,添加功能示例
這篇文章主要介紹了Android編程實現(xiàn)通訊錄中聯(lián)系人的讀取,查詢,添加功能,涉及Android權(quán)限控制及通訊錄相關(guān)操作技巧,需要的朋友可以參考下2017-07-07Android Studio中使用jni進行opencv開發(fā)的環(huán)境配置方法
今天小編就為大家分享一篇Android Studio中使用jni進行opencv開發(fā)的環(huán)境配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Android判斷手機是否是小米MIUI系統(tǒng)的方法
這篇文章主要介紹了Android判斷手機是否是小米MIUI系統(tǒng)的方法的相關(guān)資料,需要的朋友可以參考下2016-02-02