BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #28211同步于 2016/1/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

点击消息栏执行特定动作

Jjoe
2016/1/11镜像同步3 回复
工程中使用了百度云推送,点击消息栏(这时候在名叫BaiduReceiver的广播接收器里)我想实现先进到主界面Activity1,之后执行特定的动作(比如跳到Activity2),但是进入Activity2之前我想先判断是否已登录,未登录则弹出弹窗让登录,否则不让进。 我写的代码: public class BaiduReceiver extends PushMessageReceiver{ ... @Override public void onNotificationClicked(Context context, String title, String description, String customContentString) { Intent intent0 = new Intent(context,Activity1.class); intent0.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); context.startActivity(intent0); handler.postDelayed(new Runnable(){ public void run(){ Activity1.judgeLoginAndDoSth();//public静态方法 } },1000); } } public class Activity1 extends Aactivity{ private static Button myButton; onCreate(){ ... myButton = new Button(this); myButton.setOnClickListener( new OnClickListener(){ public void onClick(View v){ //判断是否登录,登录则跳至Aactivity2,未登录则弹登录窗 ... } } ); } public static void judgeLoginAndDoSth(){ myButton.performClick(); } } 我在主界面Activity1写一个public static 方法即judgeLoginAndDoSth,跳到主界面之后,然后在广播接收器里延时调用这个方法(使用线程延时调用,是为了等Activity1界面创建完毕再调,这个策略好像不太好,求指教); 然后由于我调用的judgeLoginAndDoSth是pulic static 里面是不能调用非静态方法的(判断是否登录以及弹窗的方法是个非静态方法,改动的话会比较麻烦涉及到很多非静态类),所以我的策略是在Activity1里面声明一个static Button ,Activity1页面初始化时给这个button添加点击事件,而点击事件onClick方法里面就可以调用非静态方法了。(我考虑过在BaiduReceiver里面发送广播然后Activity1注册并接收,但是代码量比我采用的方案要多就没采用) 说明: 1、为什么不在百度云推送的广播接收器里面直接跳到Activity2? 因为进入Activity2之前需要进行登录判断,而判断未登录需要弹出窗口,百度广播接收器里面的context和Activity不是一种类型的,不能弹窗。 2、为什么不把判断登录和弹窗的逻辑都放在Activity2? 为了界面友好,要是用户不想登录就什么看不到,所以Activity1其实相当于主页,供用户停留,用户不登陆也可以查看其它内容。 以上流程有何可改进的的地方,或者那些地方我想的不对,或者采取其它的策略比较好?请大神赐教一下
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
fuxuemingzhu机器人#1 · 2016/1/11
context可以强转Activity啊
Jjoe机器人#2 · 2016/1/11
“说明: 1、为什么不在百度云推送的广播接收器里面直接跳到Activity2? 因为进入Activity2之前需要进行登录判断,而判断未登录需要弹出窗口,百度广播接收器里面的context和Activity不是一种类型的,不能弹窗。” 试过(以上),报错,大致意思就是receiver类里面的context类型有限制,不能显示Dialog 【 在 fuxuemingzhu 的大作中提到: 】 : context可以强转Activity啊
a206206机器人#3 · 2016/1/12
BroadcastReceiver的context是app context。Dialog必然要和Activity绑定,弹不了