Android实现强制下线功能的示例代码
程序员文章站
2022-04-25 20:28:07
一、回顾 上次连载写了两个类,一个类activitycollector.java用于管理所有的活动;一个类是baseactivity.java作为所有活动的父类; 还有一个放在layout目录中的...
一、回顾
- 上次连载写了两个类,一个类
activitycollector.java
用于管理所有的活动;一个类是baseactivity.java
作为所有活动的父类; - 还有一个放在layout目录中的登录界面
login.xml
二、登录页面的活动
接下来写一个登录页面的活动,继承自baseactivity.java
package com.example.broadcastbestpractice; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.toast; public class loginactivity extends baseactivity{ private edittext accountedit; private edittext passwordedit; private button login; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login); accountedit = (edittext)findviewbyid(r.id.account); passwordedit = (edittext)findviewbyid(r.id.password); login = (button) findviewbyid(r.id.login); login.setonclicklistener( new onclicklistener() { @override public void onclick(view v) { string account =accountedit.gettext().tostring(); string password = passwordedit.gettext().tostring(); //如果账号是admin,密码是12345,就认为登录成功 if(account.contentequals("admin") && password.equals("12345")) { intent intent = new intent(loginactivity.this,mainactivity.class); startactivity(intent); finish(); }else { toast.maketext(loginactivity.this,"account or password is invalid",toast.length_short).show(); } } }); } }
- 使用
findviewbyid
方法分别获取输入框以及登录按钮的实例 - 然后设置点击事件:先判断账号和密码对不对,对了就是用intent实例进入到主活动中;错了就重新进入登录页面,并且打印出一条提示语。
- 接着改造一下主界面,当然加上强制下线功能就行,不要其他花里胡哨的。
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <button android:id="@+id/force_offline" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="send force offline broadcast" /> </linearlayout>
- 非常简单,就是加了一个按钮
- 接下来修改主活动的逻辑
package com.example.broadcastbestpractice; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); button forceoffline = (button) findviewbyid(r.id.force_offline); forceoffline.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent intent = new intent("com.example.broadcastbestpractice.force_offline"); sendbroadcast(intent); } }); } }
- 在点击事件里面,我们发送了
com.example.broadcastbestpractice.force_offline
广播,用于通知程序强制用户下线。 - 这说明强制用户下线的功能,应该写在接收器中,不写在具体某个活动中,这样发出“下线”广播的时候,就能完成下线操作了。
- 接下来创建一个广播接收器
package com.example.broadcastbestpractice; import android.app.alertdialog; import android.app.alertdialog.builder; import android.content.broadcastreceiver; import android.content.context; import android.content.dialoginterface; import android.content.intent; import android.view.windowmanager; import android.content.dialoginterface.onclicklistener;; public class forceofflinereceiver extends broadcastreceiver{ @override public void onreceive(final context context,intent intent) { alertdialog.builder dialogbuilder = new alertdialog.builder(context); dialogbuilder.settitle("warning"); dialogbuilder.setmessage("you are forced to be offline,please try to login again."); dialogbuilder.setcancelable(false); //下面这句改了 dialogbuilder.setpositivebutton("ok", new onclicklistener() { @override public void onclick(dialoginterface dialog,int which) { activitycollector.finishall();//销毁所有的活动 intent intent = new intent(context,loginactivity.class); intent.addflags(intent.flag_activity_new_task); context.startactivity(intent);//重新启动loginactivity } }); alertdialog alertdialog = dialogbuilder.create(); //需要设置alertdialog的类型,保证广播接收器中可以正常弹出 alertdialog.getwindow().settype(windowmanager.layoutparams.type_system_alert); alertdialog.show(); } }
25.1
三、源码:
broadcastbestpractice
https://github.com/ruigege66/android/tree/master/broadcastbestpractice
到此这篇关于android实现强制下线功能的示例代码的文章就介绍到这了,更多相关android 强制下线内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 北魏文成帝拓跋濬简介:太武帝时期被称为“世嫡皇孙”
下一篇: Flutter实现局部刷新