日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android通过广播实现强制下线功能

發布時間:2023/12/15 Android 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android通过广播实现强制下线功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android通過廣播實現強制下線功能

我們首先定義一個activity集合類,在這個類里面主要添加三個方法,分別是

1.添加activity

2.刪除activity

3.關閉所有activity

如下圖:

package cn.xiayiye.forceoff_line;import android.app.Activity;import java.util.ArrayList; import java.util.List;/*** 創 建 者:下一頁5(輕飛揚)* 創建時間:2018/2/28.11:05* 個人小站:http://wap.yhsh.ai(已掛)* 最新小站:http://www.iyhsh.icoc.in* 聯系作者:企鵝 13343401268* 博客地址:http://blog.csdn.net/xiayiye5* 空間名稱:XiaYiYeMap* 項目包名:cn.xiayiye.forceoff_line*/ class ActivityCollector {private static List<Activity> activities = new ArrayList<>();//存放activity的集合//添加activitystatic void addActivity(Activity acy) {activities.add(acy);}//移除activitystatic void removeActivity(Activity acy) {activities.remove(acy);}//銷毀所有activitystatic void finishAll() {for (Activity activity : activities) {if (!activity.isFinishing()) {activity.finish();//關閉所有activity}}} }

2.我們在寫一個baseactivity,讓所有的activity繼承activity,然后在baseactivity里面調用添加activity和關閉所有activity的方法即可:

package cn.xiayiye.forceoff_line;import android.app.Activity; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log;/*** 創 建 者:下一頁5(輕飛揚)* 創建時間:2018/2/28.11:10* 個人小站:http://wap.yhsh.ai(已掛)* 最新小站:http://www.iyhsh.icoc.in* 聯系作者:企鵝 13343401268* 博客地址:http://blog.csdn.net/xiayiye5* 空間名稱:XiaYiYeMap* 項目包名:cn.xiayiye.forceoff_line*/ public class BaseActivity extends Activity {private Off_LineReceiver off_lineReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (savedInstanceState != null) {String save = savedInstanceState.getString("save");Log.e("打印保存后取出的信息", save);}//添加所有活動頁面ActivityCollector.addActivity(this);}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putString("save", "要保存的信息");}@Overrideprotected void onDestroy() {super.onDestroy();ActivityCollector.removeActivity(this);//移除所有活動頁面}@Overrideprotected void onResume() {super.onResume();IntentFilter intentFilter = new IntentFilter("com.yhsh.off-line");off_lineReceiver = new Off_LineReceiver();registerReceiver(off_lineReceiver, intentFilter);//注冊廣播}@Overrideprotected void onPause() {super.onPause();if (off_lineReceiver != null) {unregisterReceiver(off_lineReceiver);//解綁廣播off_lineReceiver = null;}}class Off_LineReceiver extends BroadcastReceiver {@Overridepublic void onReceive(final Context context, Intent intent) {Log.e("打印動作:", intent.getAction());if ("com.yhsh.off-line".equals(intent.getAction())) {//彈框強制下線AlertDialog.Builder alert = new AlertDialog.Builder(context);alert.setCancelable(false);//點擊對話框以外不取消對話框alert.setTitle("警告").setMessage("你已被強制下線").setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//關閉所有的activity,直接進入登錄頁面ActivityCollector.finishAll();startActivity(new Intent(context, LoginActivity.class));//通過下面的一個屬性會讓頁面跳轉之間無任何動畫效果 // overridePendingTransition(0, 0);}}).show();//顯示對話框}}} }

然后我們先寫一個簡單的登錄頁面:

當賬號密碼正確方可進入主頁面

package cn.xiayiye.forceoff_line;import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;public class LoginActivity extends BaseActivity implements View.OnClickListener {private EditText et_act;private EditText et_pwd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);et_act = (EditText) findViewById(R.id.et_act);et_pwd = (EditText) findViewById(R.id.et_pwd);Button bt_login = (Button) findViewById(R.id.bt_login);bt_login.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_login:login();break;}}private void login() {String trim_act = et_act.getText().toString().trim();String trim_pwd = et_pwd.getText().toString().trim();if (!TextUtils.isEmpty(trim_act) && !TextUtils.isEmpty(trim_pwd)) {if (trim_act.equals("admin") && trim_pwd.equals("123456")) {//登錄startActivity(new Intent(LoginActivity.this, MainActivity.class));finish();//關閉登錄頁面} else {Toast.makeText(this, "賬號密碼不正確!", Toast.LENGTH_SHORT).show();}} else {Toast.makeText(this, "賬號密碼不能為空!", Toast.LENGTH_SHORT).show();}} }

3.然后再主頁面自定義一個廣播,發送給所有activity,當然所有頁面都是繼承baseactivity的,所以我們只需要在baseactivity里面接受自定義的廣播即可實現關閉所有頁面個添加所有activity:


package cn.xiayiye.forceoff_line;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;public class MainActivity extends BaseActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button off_line = (Button) findViewById(R.id.off_line);off_line.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//發送強制下線廣播Intent intent = new Intent("com.yhsh.off-line");sendBroadcast(intent);}});} }

通過我們在baseactivity里面接收到自定義的廣播來關閉所有activity頁面,重新進入到登錄頁面,這樣一來我們就實現了任意頁面強制下線功能了。


動態圖如下:


如果看以上代碼還是不懂得請點擊源碼:

源碼下載


總結

以上是生活随笔為你收集整理的Android通过广播实现强制下线功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。