package com.example.jpushdemo; import android.app.Notification; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.util.LinkedHashSet; import java.util.Set; import cn.jpush.android.api.BasicPushNotificationBuilder; import cn.jpush.android.api.CustomPushNotificationBuilder; import cn.jpush.android.api.InstrumentedActivity; import cn.jpush.android.api.JPushInterface; import com.atguigu.beijingnews.R; import cn.jpush.android.api.MultiActionsNotificationBuilder; import cn.jpush.android.api.TagAliasCallback; public class PushSetActivity extends InstrumentedActivity implements OnClickListener { private static final String TAG = "JPush"; Button mSetTag; Button mSetAlias; Button mStyleBasic; Button mStyleAddActions; Button mStyleCustom; Button mSetPushTime; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.push_set_dialog); init(); initListener(); } private void init() { mSetTag = (Button) findViewById(R.id.bt_tag); mSetAlias = (Button) findViewById(R.id.bt_alias); mStyleAddActions = (Button) findViewById(R.id.setStyle0); mStyleBasic = (Button) findViewById(R.id.setStyle1); mStyleCustom = (Button) findViewById(R.id.setStyle2); mSetPushTime = (Button) findViewById(R.id.bu_setTime); } private void initListener() { mSetTag.setOnClickListener(this); mSetAlias.setOnClickListener(this); mStyleAddActions.setOnClickListener(this); mStyleBasic.setOnClickListener(this); mStyleCustom.setOnClickListener(this); mSetPushTime.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_tag: setTag(); break; case R.id.bt_alias: setAlias(); break; case R.id.setStyle0: setAddActionsStyle(); break; case R.id.setStyle1: setStyleBasic(); break; case R.id.setStyle2: setStyleCustom(); break; case R.id.bu_setTime: Intent intent = new Intent(PushSetActivity.this, SettingActivity.class); startActivity(intent); break; } } private void setTag() { EditText tagEdit = (EditText) findViewById(R.id.et_tag); String tag = tagEdit.getText().toString().trim(); // 检查 tag 的有效性 if (TextUtils.isEmpty(tag)) { Toast.makeText(PushSetActivity.this, R.string.error_tag_empty, Toast.LENGTH_SHORT).show(); return; } // ","隔开的多个 转换成 Set String[] sArray = tag.split(","); Set<String> tagSet = new LinkedHashSet<String>(); for (String sTagItme : sArray) { if (!ExampleUtil.isValidTagAndAlias(sTagItme)) { Toast.makeText(PushSetActivity.this, R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show(); return; } tagSet.add(sTagItme); } //调用JPush API设置Tag mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_TAGS, tagSet)); } private void setAlias() { EditText aliasEdit = (EditText) findViewById(R.id.et_alias); String alias = aliasEdit.getText().toString().trim(); if (TextUtils.isEmpty(alias)) { Toast.makeText(PushSetActivity.this, R.string.error_alias_empty, Toast.LENGTH_SHORT).show(); return; } if (!ExampleUtil.isValidTagAndAlias(alias)) { Toast.makeText(PushSetActivity.this, R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show(); return; } //调用JPush API设置Alias mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias)); } /** * 设置通知提示方式 - 基础属性 */ private void setStyleBasic() { BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(PushSetActivity.this); builder.statusBarDrawable = R.drawable.ic_launcher; builder.notificationFlags = Notification.FLAG_AUTO_CANCEL; //设置为点击后自动消失 builder.notificationDefaults = Notification.DEFAULT_SOUND; //设置为铃声( Notification.DEFAULT_SOUND)或者震动( Notification.DEFAULT_VIBRATE) JPushInterface.setPushNotificationBuilder(1, builder); Toast.makeText(PushSetActivity.this, "Basic Builder - 1", Toast.LENGTH_SHORT).show(); } /** * 设置通知栏样式 - 定义通知栏Layout */ private void setStyleCustom() { CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(PushSetActivity.this, R.layout.customer_notitfication_layout, R.id.icon, R.id.title, R.id.text); builder.layoutIconDrawable = R.drawable.ic_launcher; builder.developerArg0 = "developerArg2"; JPushInterface.setPushNotificationBuilder(2, builder); Toast.makeText(PushSetActivity.this, "Custom Builder - 2", Toast.LENGTH_SHORT).show(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { finish(); } return super.onKeyDown(keyCode, event); } private void setAddActionsStyle() { MultiActionsNotificationBuilder builder = new MultiActionsNotificationBuilder(PushSetActivity.this); builder.addJPushAction(R.drawable.jpush_ic_richpush_actionbar_back, "first", "my_extra1"); builder.addJPushAction(R.drawable.jpush_ic_richpush_actionbar_back, "second", "my_extra2"); builder.addJPushAction(R.drawable.jpush_ic_richpush_actionbar_back, "third", "my_extra3"); JPushInterface.setPushNotificationBuilder(10, builder); Toast.makeText(PushSetActivity.this, "AddActions Builder - 10", Toast.LENGTH_SHORT).show(); } private final TagAliasCallback mAliasCallback = new TagAliasCallback() { @Override public void gotResult(int code, String alias, Set<String> tags) { String logs; switch (code) { case 0: logs = "Set tag and alias success"; Log.i(TAG, logs); break; case 6002: logs = "Failed to set alias and tags due to timeout. Try again after 60s."; Log.i(TAG, logs); if (ExampleUtil.isConnected(getApplicationContext())) { mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias), 1000 * 60); } else { Log.i(TAG, "No network"); } break; default: logs = "Failed with errorCode = " + code; Log.e(TAG, logs); } ExampleUtil.showToast(logs, getApplicationContext()); } }; private final TagAliasCallback mTagsCallback = new TagAliasCallback() { @Override public void gotResult(int code, String alias, Set<String> tags) { String logs; switch (code) { case 0: logs = "Set tag and alias success"; Log.i(TAG, logs); break; case 6002: logs = "Failed to set alias and tags due to timeout. Try again after 60s."; Log.i(TAG, logs); if (ExampleUtil.isConnected(getApplicationContext())) { mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_TAGS, tags), 1000 * 60); } else { Log.i(TAG, "No network"); } break; default: logs = "Failed with errorCode = " + code; Log.e(TAG, logs); } ExampleUtil.showToast(logs, getApplicationContext()); } }; private static final int MSG_SET_ALIAS = 1001; private static final int MSG_SET_TAGS = 1002; private final Handler mHandler = new Handler() { @Override public void handleMessage(android.os.Message msg) { super.handleMessage(msg); switch (msg.what) { case MSG_SET_ALIAS: Log.d(TAG, "Set alias in handler."); JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj, null, mAliasCallback); break; case MSG_SET_TAGS: Log.d(TAG, "Set tags in handler."); JPushInterface.setAliasAndTags(getApplicationContext(), null, (Set<String>) msg.obj, mTagsCallback); break; default: Log.i(TAG, "Unhandled msg - " + msg.what); } } }; }