仿QQ修改密码后弹出对话框(Jpush推送下实现)
2015-12-01 10:09
633 查看
在Application中写如下方法:
然后在Jpush的Reciever中的
protected static boolean isTopActivity(Activity activity){ String packageName = "xxxxx"; ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(1); if(tasksInfo.size() > 0){ System.out.println("---------------包名-----------"+tasksInfo.get(0).topActivity.getPackageName()); //应用程序位于堆栈的顶层 if(packageName.equals(tasksInfo.get(0).topActivity.getPackageName())){ return true; } } return false; } 需要添加android.permission.GET_TASKS权限
然后在Jpush的Reciever中的
if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { Log.d(TAG, "[MyReceiver] 接收到推送下来的通知"); int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId); String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); String messagetype = ""; try { JSONObject extrasJson = new JSONObject(extras); messagetype = extrasJson.getString("messagetype"); Log.i("messagetype------", messagetype); } catch (Exception e) { } //在前台运行执行它 if (MyApplication.getIntance().isTopActivity()){ if ("1".equals(messagetype)) { sp.edit().putString("userPassword_Account", "") .putBoolean("autoLogin", false).commit(); MyDialog dialog = new MyDialog(MyApplication.getIntance(), R.style.ForwardDialog);//自定义Dialog布局 dialog.setCanceledOnTouchOutside(false); dialog.getWindow() .setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); dialog.show(); } }else { if ("1".equals(messagetype)){ MyApplication.getIntance().exit(); } }3.自定义Dialog
public class MyDialog extends Dialog { private Button leftTextView, rightTextView; private Context context; public MyDialog(Context context) { super(context); } public MyDialog(Context context, int theme) { super(context, theme); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_dialog); leftTextView = (Button) findViewById(R.id.btn_deletecustomer); rightTextView = (Button) findViewById(R.id.btn_cancel); leftTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); Intent loginintent = new Intent(MyApplication.getIntance(), LoginActivity.class); loginintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); MyApplication.getIntance().startActivity(loginintent); MyApplication.getIntance().exit(); } }); rightTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); MyApplication.getIntance().exit(); System.exit(0); } }); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode){ return true; } return super.onKeyDown(keyCode, event); } }
相关文章推荐
- JDK动态代理中关于InvocationHandler中invoke()方法的调用问题
- #VSTS 日志# TFS 2015 Update 1 发布 – Git和TFVC代码库可以混合使用了
- UE4组件
- Mysql文件太大导入失败解决办法总结
- DNS设置及常用DNS服务器地址
- 域名301跳转
- 网站开发进阶(二十三)Address already in use: JVM_Bind <null>:8088
- 开发――顶级开发者社区网站
- 网站开发进阶(二十三)Address already in use: JVM_Bind <null>:8088
- IOS中一段文字设置多种字体颜色代码
- [EmguCV][000] 基于C#搭建 Emgu CV 开发环境
- 黑马程序员-Java的面向对象(对象、类和封装)
- 南大软院大神养成计划——第十六天
- Android新建项目选择SDK的区别
- gmsk调制解调
- 大数据学习
- Go语言TCP Socket编程
- 基于JavaScript操作DOM常用的API小结
- 修改 Mac 版 AndroidStudio 虚拟机内存大小
- BIOS中断大全