編輯:關於android開發
最近幾天了解市場上主流的推送SDK。
騰迅信鴿
所需SDK,去官網自行下載。去下載
完整的清單文件如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="你的包名" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="19" /> 10 <!-- 【必須】 信鴿SDK所需權限 --> 11 <uses-permission android:name="android.permission.INTERNET" /> 12 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 13 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 14 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 15 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 16 <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 17 <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 18 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 19 <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> 20 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 21 <uses-permission android:name="android.permission.WAKE_LOCK" /> 22 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 23 <uses-permission android:name="android.permission.GET_TASKS" /> 24 <uses-permission android:name="android.permission.READ_LOGS" /> 25 <uses-permission android:name="android.permission.VIBRATE" /> 26 <!-- 【可選】 信鴿SDK所需權限 --> 27 <uses-permission android:name="android.permission.BLUETOOTH" /> 28 <uses-permission android:name="android.permission.BATTERY_STATS" /> 29 30 <application 31 android:allowBackup="true" 32 android:icon="@drawable/ic_launcher" 33 android:label="@string/app_name" 34 android:theme="@style/AppTheme" > 35 <activity 36 android:name="你的包名.MainActivity" 37 android:label="@string/app_name" > 38 <intent-filter> 39 <action android:name="android.intent.action.MAIN" /> 40 41 <category android:name="android.intent.category.LAUNCHER" /> 42 </intent-filter> 43 </activity> 44 <!-- 【必須】 信鴿receiver廣播接收 --> 45 <receiver 46 android:name="com.tencent.android.tpush.XGPushReceiver" 47 android:process=":xg_service_v2" > 48 <intent-filter android:priority="0x7fffffff" > 49 50 <!-- 【必須】 信鴿SDK的內部廣播 --> 51 <action android:name="com.tencent.android.tpush.action.SDK" /> 52 <action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" /> 53 <!-- 【必須】 系統廣播:開屏和網絡切換 --> 54 <action android:name="android.intent.action.USER_PRESENT" /> 55 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 56 57 <!-- 【可選】 一些常用的系統廣播,增強信鴿service的復活機會,請根據需要選擇。當然,你也可以添加APP自定義的一些廣播讓啟動service --> 58 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" /> 59 <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> 60 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> 61 </intent-filter> 62 <!-- 【可選】 usb相關的系統廣播,增強信鴿service的復活機會,請根據需要添加 --> 63 <intent-filter android:priority="0x7fffffff" > 64 <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> 65 <action android:name="android.intent.action.MEDIA_REMOVED" /> 66 <action android:name="android.intent.action.MEDIA_CHECKING" /> 67 <action android:name="android.intent.action.MEDIA_EJECT" /> 68 69 <data android:scheme="file" /> 70 </intent-filter> 71 </receiver> 72 73 <!-- 【必須】 (2.30及以上版新增)展示通知的activity --> 74 <!-- 【注意】 如果被打開的activity是啟動模式為SingleTop,SingleTask或SingleInstance,請根據通知的異常自查列表第8點處理 --> 75 <activity 76 android:name="com.tencent.android.tpush.XGPushActivity" 77 android:exported="true" > 78 <intent-filter> 79 80 <!-- 若使用AndroidStudio,請設置android:name="android.intent.action" --> 81 <action android:name="" /> 82 </intent-filter> 83 </activity> 84 85 <!-- 【必須】 信鴿service --> 86 <service 87 android:name="com.tencent.android.tpush.service.XGPushService" 88 android:exported="true" 89 android:persistent="true" 90 android:process=":xg_service_v2" /> 91 92 <!-- 【必須】 通知service,此選項有助於提高抵達率 --> 93 <service 94 android:name="com.tencent.android.tpush.rpc.XGRemoteService" 95 android:exported="true" > 96 <intent-filter> 97 <action android:name="你的包名.PUSH_ACTION" /> 98 </intent-filter> 99 </service> 100 101 <!-- 【必須】 請將YOUR_ACCESS_ID修改為APP的AccessId,“21”開頭的10位數字,中間沒空格 --> 102 <meta-data 103 android:name="XG_V2_ACCESS_ID" 104 android:value="你的ACCESS_ID" /> 105 <!-- 【必須】 請將YOUR_ACCESS_KEY修改為APP的AccessKey,“A”開頭的12位字符串,中間沒空格 --> 106 <meta-data 107 android:name="XG_V2_ACCESS_KEY" 108 android:value="你的ACCESS_KEY" /> 109 </application> 110 111 </manifest> View CodeMainActivity中配置如下:
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 XGPushManager.registerPush(this); 6 // // 2.36(不包括)之前的版本需要調用以下2行代碼 7 // Intent service = new Intent(this, XGPushService.class); 8 // startService(service); 9 } View Code相當Easy吧,如果過程無誤,就可以正常推送了。
Bmob
Bmob配置過程相對信鴿來說稍微復雜一點,缺點就是需要自己在自定義Receiver裡接收推送消息,自己發送通知,但可定制性也較強。
所需SDK,去官網自行下載。去下載
完整的清單文件如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="你的包名" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="19" /> 10 11 <!-- BmobPush SDK權限 --> 12 <permission 13 android:name="cn.bmob.permission.push" 14 android:protectionLevel="normal" > 15 </permission> 16 17 <uses-permission android:name="cn.bmob.permission.push" /> <!-- 添加自定義的權限 --> 18 <uses-permission android:name="android.permission.READ_LOGS" /> 19 <uses-permission android:name="android.permission.INTERNET" /> 20 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 21 <uses-permission android:name="android.permission.WAKE_LOCK" /> 22 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 23 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 24 <uses-permission android:name="android.permission.VIBRATE" /> 25 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 26 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 27 <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> 28 29 <application 30 android:allowBackup="true" 31 android:icon="@drawable/ic_launcher" 32 android:label="@string/app_name" 33 android:theme="@style/AppTheme" > 34 <activity 35 android:name="你的包名.MainActivity" 36 android:label="@string/app_name" 37 android:launchMode="singleTop" > 38 <intent-filter> 39 <action android:name="android.intent.action.MAIN" /> 40 41 <category android:name="android.intent.category.LAUNCHER" /> 42 </intent-filter> 43 </activity> 44 45 <service 46 android:name="cn.bmob.push.lib.service.PushService" 47 android:exported="true" 48 android:label="PushService" 49 android:permission="cn.bmob.permission.push" 50 android:process="cn.bmob.push" > 51 <intent-filter> 52 <action android:name="cn.bmob.push.lib.service.PushService" /> 53 </intent-filter> 54 </service> 55 56 <receiver android:name="cn.bmob.push.PushReceiver" > 57 <intent-filter android:priority="2147483647" > <!-- 優先級加最高 --> 58 <!-- 系統啟動完成後會調用 --> 59 <action android:name="android.intent.action.BOOT_COMPLETED" /> 60 <!-- 解鎖完成後會調用 --> 61 <action android:name="android.intent.action.USER_PRESENT" /> 62 <!-- 監聽網絡連通性 --> 63 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 64 </intent-filter> 65 </receiver> 66 <!-- 第四部中創建的消息接收器,在這裡進行注冊 --> 67 <receiver android:name="你的包名.MyPushMessageReceiver" > 68 <intent-filter> 69 <action android:name="cn.bmob.push.action.MESSAGE" /> 70 </intent-filter> 71 </receiver> 72 </application> 73 74 </manifest> View CodeMainActivity中配置如下:
1 // 初始化BmobSDK 2 Bmob.initialize(this, "你的AppKey"); 3 // 使用推送服務時的初始化操作 4 BmobInstallation.getCurrentInstallation(this).save(); 5 // 啟動推送服務 6 BmobPush.startWork(this, "你的AppKey"); View CodeMyPushMessageReceiver完整代碼如下:
1 public class MyPushMessageReceiver extends BroadcastReceiver { 2 3 private Context mContext; 4 5 @Override 6 public void onReceive(Context context, Intent intent) { 7 mContext = context; 8 if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) { 9 String jsonstr = intent 10 .getStringExtra(PushConstants.EXTRA_PUSH_MESSAGE_STRING); 11 String msg = ""; 12 try { 13 JSONObject object = new JSONObject(jsonstr); 14 msg = object.getString("alert"); 15 } catch (JSONException e) { 16 e.printStackTrace(); 17 } 18 19 SendNotification(msg); 20 } 21 } 22 23 /** 24 * 發送通知 25 * 26 * @param message 27 */ 28 @SuppressWarnings("deprecation") 29 private void SendNotification(String message) { 30 // 點擊之後執行的Intent 31 Intent intent = new Intent(mContext, MainActivity.class); 32 PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, 33 intent, 0); 34 Notification notification = new Notification(); 35 notification.icon = R.drawable.ic_launcher; 36 notification.tickerText = "收到消息推送"; 37 notification.when = System.currentTimeMillis(); 38 notification.defaults = Notification.DEFAULT_SOUND 39 | Notification.DEFAULT_VIBRATE;// 設置默認為系統聲音 40 notification.flags = Notification.FLAG_AUTO_CANCEL;// 點擊後自動消失 41 notification.setLatestEventInfo(mContext, "推送消息", message, 42 pendingIntent); 43 NotificationManager mManager = (NotificationManager) mContext 44 .getSystemService(Context.NOTIFICATION_SERVICE); 45 mManager.notify(1, notification); 46 47 } 48 } View Code
Android 手機衛士--導航界面4的業務邏輯,android衛士本文實現導航界面4的業務邏輯,導航界面4的界面如下: 本文地址:http://www.cnblogs
以前曾經地介紹過MediaPlayer的基本用法,這裡就深入地講解MediaPlayer的在線播放
Android Studio上面使用Ndk JNI 開發工程 Ps:最近比較閒,so.多更新幾篇博客算是總結一下.順便鄙視一下有的programmer照搬網上面文章,
Android開發學習之路--異步消息Handler,Message,Looper和AsyncTask之初體驗 在簡易音樂播放器中,用了Handler,也沒有過多地去