热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现强制下线功能的示例代码

这篇文章主要介绍了Android实现强制下线功能的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、回顾

  • 上次连载写了两个类,一个类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实例进入到主活动中;错了就重新进入登录页面,并且打印出一条提示语。
  • 接着改造一下主界面,当然加上强制下线功能就行,不要其他花里胡哨的。


 
  • 非常简单,就是加了一个按钮
  • 接下来修改主活动的逻辑
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 强制下线内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 在尝试使用 Android 发送 SOAP 请求时遇到错误,服务器返回 '无法处理请求' 的信息,并指出某个值不能为 null。本文探讨了可能的原因及解决方案。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文介绍了一个使用Slideview组件实现循环轮播效果的例子,并将其作为ListView顶部的一项。此ListView包含了两种不同的模板设计,一种以Slideview为核心,另一种则是标准的单元格模板,包含按钮和标签。 ... [详细]
  • 本文介绍了.hbs文件作为Ember.js项目中的视图层,类似于HTML文件的功能,并详细讲解了如何在Ember.js应用中集成Bootstrap框架及其相关组件的方法。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • 在开发一个网页音乐播放器时遇到问题,需要从不同源读取MP3文件的ID3标签信息,包括流派、歌手和歌曲名称等。尝试使用PHP未果后转而考虑使用JavaScript进行跨域读取,但不清楚具体配置方法,寻求技术指导。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文详细介绍了如何在Android L版本中应用Material Design的主题和布局,包括Material主题的应用方法、自定义主题和颜色方案、状态栏和导航条的自定义,以及Material Design布局的特点和兼容性处理。 ... [详细]
  • 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
    【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库 ... [详细]
  • 本文介绍了如何通过 XMLHttpRequest 对象在不同浏览器中实现 AJAX 的 POST 和 GET 请求,并详细说明了 XMLHttpRequest 的五个状态及其含义。 ... [详细]
  • 本文介绍了如何解决 ChinaASP.Upload 错误 '80040002',即必须添加版权信息的问题,并提供了详细的步骤和注意事项。 ... [详细]
author-avatar
sir栖云_888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有