package cn.daixiaodong.myapp.receiver;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.NotificationCompat;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
import cn.daixiaodong.myapp.R;
import cn.daixiaodong.myapp.activity.MainActivity;
import cn.daixiaodong.myapp.activity.MainActivity_;
import cn.daixiaodong.myapp.model.PushMessageModel;
import cn.daixiaodong.myapp.db.PushMessageDao;
import cn.daixiaodong.myapp.fragment.SettingsFragment;
/**
* 自定义的接收推送消息广播接收器,替代LeanCloud提供的
*/
public class PushBroadcastReceiver extends BroadcastReceiver {
public static final String PUSH_ACTION = "cn.daixiaodong.myapp.push";
public static final String BROAD_DATA_KEY = "broad_data";
private static PushMessageDao dao = null;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
JSONObject json = null;
String mMessage = null;
// 处理用户不接受消息推送
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
boolean message_push = sharedPref.getBoolean(SettingsFragment.KEY_MESSAGE_PUSH, true);
if(!message_push){
return;
}
dao = new PushMessageDao(context);
if (PUSH_ACTION.equals(action)) {
Log.i("action", action);
try {
String channel = intent.getExtras().getString("com.avos.avoscloud.Channel");
//获取消息内容
json = new JSONObject(intent.getExtras().getString("com.avos.avoscloud.Data"));
// Log.i("message", json.getString("message"));
mMessage = json.getString("message");
//Log.i("tag", "got action " + action + " on channel " + channel + " with:");
Iterator itr = json.keys();
while (itr.hasNext()) {
String key = (String) itr.next();
// Log.i("tag", "..." + key + " => " + json.getString(key));
}
} catch (JSONException e) {
Log.i("tag", "JSONException: " + e.getMessage());
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentText("收到消息");
builder.setContentTitle("消息标题");
builder.setTicker("活动通知");
builder.setAutoCancel(true);
Intent resultIntent = new Intent(context, MainActivity_.class);
resultIntent.setAction(MainActivity.BROAD_RECEIVER_ACTION);
Bundle data = new Bundle();
data.putString("title", "杀哈哈哈");
resultIntent.putExtra(BROAD_DATA_KEY, data);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
context,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(resultPendingIntent);
// Sets an ID for the notification
int mNotificationId = 1000;
// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, builder.build());
if (mMessage != null) {
PushMessageModel pushmessage = new PushMessageModel();
pushmessage.setMessage(mMessage);
dao.addPushMessage(pushmessage);
}
}
}
}