android 学习,强制下线功能实现

来源:互联网 发布:宏业软件公司地址 编辑:程序博客网 时间:2024/06/12 20:01

强制下线功能的实现,关键是在于,如果有广播的发出,则会使的程序退回到登陆页面


具体实现参考第一行代码的 5.5


怎么操作呢



1 ActivityCollector 活动管理家,方便后面一口气删除活动

2 BaseActivity 基本活动 让所有活动继承自他

3 登陆页面 loginAcitivity

这么有一个输入帐号,输入密码,都是形式主义啦

4 登陆进去后有一个界面,在里面有个按键,可以发送广播

5 写一个广播接收器,来接收这个广播,执行操作退出当前界面,回到登陆的界面(这就达到了下线的目的)


在广播接收器里面,用到了Alertdialog这个控件

这个控件,在于比较重要的操作时,让你一定看见,是一个全屏的显示。就和Windows7有时候会弹出一个框框,让你点击确定那种

然后对于这个Alertdialog的确定按键,设置删除活动,重启动login界面,一切就好了


我在编写的时候,发现当登陆进去后,发送广播,就崩溃。也不知道什么原因,看不懂下面给的信息,然后就只有拼命检查代码

看来看去,也没看出问题来

然后我一步一步的检查,用toast来检查,发现不知道为什么,广播是收到了的,但是无法从receiver中启动这个alertdialog 这真是奇了怪了,权限什么的都给了的

就和书上做的一模一样。

不行就算了。。我采用了一个折中的办法,从receiver中启动一个alertdialogAcitivity的活动,然后在这个活动中,启动alertdialog ,再执行那些删除所有活动,启动登陆界面login

效果几乎一样


但是,为什么我这里就不能从receiver中启动alertdialog呢

这不科学啊,别人都行,我的却不行。我有点怀疑是因为不是原生态android


部分改动的代码


public class ForeceOfflineReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {

        Toast.makeText(context,"ok",Toast.LENGTH_SHORT).show();

        Intent Start = new Intent(context,alertDialog.class);
        Start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(Start);

    }
}


public class alertDialog extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alert_dialog);
        AlertDialog.Builder dialog=new AlertDialog.Builder(this);
        dialog.setTitle("this is a alertdialog");
        dialog.setMessage("something important");
        dialog.setCancelable(false);
        dialog.setPositiveButton("ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                ActivityCollector.finishAll();
                Intent intent=new Intent(alertDialog.this,LoginActivity.class);
                startActivity(intent);
            }
        });

        dialog.show();
    }


}


0 0