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实例进入到主活动中;错了就重新进入登录页面,并且打印出一条提示语。
  • 接着改造一下主界面,当然加上强制下线功能就行,不要其他花里胡哨的。
<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 强制下线内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android使用广播(BroadCast)实现强制下线的方法

    本文实例讲述了Android使用广播(BroadCast)实现强制下线的方法.分享给大家供大家参考,具体如下: 使用广播简单模拟强制下线功能. 1.新建活动管理类 新建Activity活动管理类,方便管理所有活动. package com.example.broadcastpractice; import java.util.ArrayList; import java.util.List; import android.app.Activity; /** * 所有活动管理器 * @author

  • Android运用BroadcastReceiver实现强制下线

    思路:首先进入登录界面,输入账号和密码后登陆到主界面,在主界面通过点击按钮发送一条强制下线的广播,广播接收者收到广播后重新进入登陆界面. 新建项目Broadcast03.强制下线功能需要先关闭所有的活动,然后返回到登录界面.所以先创建一个ActivityCollector类用来管理所有的活动: public class ActivityCollector { public static List<Activity> activities = new ArrayList<Activity&

  • Android 本地广播和强制下线功能的实现代码

    一.使用本地广播 1.本地广播一个举例 package com.example.broadcasttest2; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Conn

  • Android端“被挤下线”功能的单点登录实现

    单点登录(被挤下线) 所谓的被挤下线功能,即一个账号在A客户端保持登陆状态,然后又在B客户端进行了登陆操作,那么A客户端就会被挤下线. 服务端需要返回Token,每次在app登录时为app分配一个新的token,如果在某次请求中app传递token不是最新的,则视为需要重新登录,在token失效的情况下,返回约定好的code App如何知道该账户已经在其他设备上登陆了呢?有三种实现方式 api请求中后台返回特定的code.缺点是需要下次请求才知道被踢下线 使用推送.后台可以推送给APP,从而使A

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

    强制下线的应用场景很多, 比如我们好多账号都有抢登的显现, 会被挤下线. 详细实现: 其实实现强制下线功能的思路也比较简单, 只需要在界面弹出一个对话框, 让用户无法进行其他操作, 必须点击对话框中的确定按钮, 然后回到登录界面即可. 但是又有一个问题, 我们通知用户强制下线, 用户可能正处于任何一个界面, 难道需要在每个界面上都编写一个弹出对话框的逻辑? 当然不是! 我们可以借助本章中所学的广播知识来轻松实现这一功能. public class ActivityConllector { pub

  • Android模拟强制下线通知功能实例代码

    package com.itheima74.broadcastbestpractice; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.support.v4.content.LocalBroadcastManager; import android.view.View; /** * 模拟强制下线通知 * 1.登录成功后10秒发送一条本地自

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

    一.回顾 上次连载写了两个类,一个类ActivityCollector.java用于管理所有的活动:一个类是BaseActivity.java作为所有活动的父类: 还有一个放在layout目录中的登录界面login.xml 二.登录页面的活动 接下来写一个登录页面的活动,继承自BaseActivity.java package com.example.broadcastbestpractice; import android.content.Intent; import android.os.B

  • Android应用强制更新APP的示例代码

    Android应用强制更新的用途十分广泛,特别上刚上线的应用肯定会存在或多或少的bug,特别是涉及移动支付这一块的内容,如果出错了会造成比较大的损失,所以强制更新显得尤为重要. 一般来说,强制更新的策略就是: 应用启动时请求后台,后台发送应用最新版本的信息(包括应用版本号.名称.更新内容说明.下载包的服务器地址.是否强制更新的标志位)等等. 下面我们就将根据以上思路来写实现代码. 1.AndroidManifest配置版本信息 在AndroidManifest.xml里定义了每个Android

  • Android仿微信发送语音消息的功能及示例代码

    微信的发送语音是有一个向上取消的,我们使用onTouchListener来监听手势,然后做出相应的操作就行了. 直接上代码: //语音操作对象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; //语音文件保存路径 private String FileName = null; FileName = Environment.getExternalStorageDirectory().getAbs

  • Android 自定义LineLayout实现满屏任意拖动功能的示例代码

    1.前言 在开发中,会有需求实现控件在屏幕随意拖动,这就需要自定义View,然后在OnTouchEvent事件中,处理MotionEvent.ACTION_MOVE事件,然后通过坐标点传值给onlayout方法,来实现控件的任意拖动,具体代码如下: import android.content.Context; import android.util.AttributeSet; import android.view.Display; import android.view.MotionEven

  • Android Filterable实现Recyclerview筛选功能的示例代码

    原先碰到筛选这种功能时,后端的接口都会让上传一个字段,根据字段来返回相应的数据.后来一次和别人对接时,接口直接返回全部数据,而且还要实现筛选功能.我...我说不就是一条sql语句的事,改接口多方便,我苦心劝导,然后被怼回来,切,不就是筛选嘛,求人不如自己搞. 1. 效果图 2. 思路 既然是筛选,那就少不了比较.也没有什么好的办法,无非就是循环对比,然后将适配器进行数据更新.页面刷新即可.但筛选的调用要方便,怎么比较才方便我们调用呢?偶然间看到了Filterable,使Adapter继承自该接口

  • Android实现显示和隐藏密码功能的示例代码

    在前端中我们知道用javascript就可以可以很容易实现,那么在Android中怎么实现这个功能呢? Java代码 package com.example.test2; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.method.HideReturnsTransformationMethod; import android.text.method.Pa

  • 微信web端后退强制刷新功能的实现代码

    具体代码如下所示: <script> //生成uuid var uuidChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); function uuid() { var r; var uuid = []; uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; uuid[14] =

随机推荐