返回信息流工程中使用了百度云推送,点击消息栏(这时候在名叫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其实相当于主页,供用户停留,用户不登陆也可以查看其它内容。
以上流程有何可改进的的地方,或者那些地方我想的不对,或者采取其它的策略比较好?请大神赐教一下
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #28211同步于 2016/1/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
点击消息栏执行特定动作
Jjoe
2016/1/11镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
“说明:
1、为什么不在百度云推送的广播接收器里面直接跳到Activity2? 因为进入Activity2之前需要进行登录判断,而判断未登录需要弹出窗口,百度广播接收器里面的context和Activity不是一种类型的,不能弹窗。”
试过(以上),报错,大致意思就是receiver类里面的context类型有限制,不能显示Dialog
【 在 fuxuemingzhu 的大作中提到: 】
: context可以强转Activity啊