当前位置: > 手游资讯 > 新手问答 > qq强制下线(实现一个类似QQ的强制下线功能)

qq强制下线(实现一个类似QQ的强制下线功能)

作者:哪吒游戏网 来源:哪吒游戏网 2020-10-18 18:04:58

qq强制下线(实现一个类似QQ的强制下线功能),哪吒游戏网给大家带来详细的qq强制下线(实现一个类似QQ的强制下线功能)介绍,大家可以阅读一下,希望这篇qq强制下线(实现一个类似QQ的强制下线功能)可以给你带来参考价值。

此处UI界面并不会写的很好看,就是一个简单的类似于强制下线功能,要用到的类如下:

在这里插入图片描述

这些类的主要做用:

此处要注意的是MainActivity,LoginActivity都是继承BaseActivity的,因为BaseActivity是继承AppCompatActivity的qq强制下线,所以并不会影响这两个活动的正常使用。

将主活动设置为LoginActivityqq强制下线,就是应用启动打开的第一个界面是LoginActivity的内容。

代码如下:

ActivityCollector:

/**
 * 此类用来管理活动
 */
public class ActivityCollector {
    // 创建一个Activity的列表
    public static List<Activity> activities = new ArrayList<>();
    // 添加activity到activities中去
    public static void addActivity(Activity activity) {
        activities.add(activity);
    }
    // 将activity从activities中移除
    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }
    // 销毁所有的Activity,也就是将activities中的activity都移除
    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

BaseActivity:

/**
 * 将此类做为所有Activity的父类,就可以轻松的管理Activity了
 */
public class BaseActivity extends AppCompatActivity {
    private ForceOfflineReceiver forceOfflineReceiver;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //将继承BaseActivity类的Activity添加到ActivityCollector的列表中去
        ActivityCollector.addActivity(this);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 将销毁的Activity从列表中移除
        ActivityCollector.removeActivity(this);
    }
    /**
     * 在应用重新开始时注册广播接收器
     * 在应用暂停时取消注册广播接收器
     * 这样的好处是始终保证只有处于栈顶的活动才能接收到com.my.force_line这条广播
     */
    // 应用重新开始时调用
    @Override
    protected void onResume() {
        super.onResume();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.my.force_line");
        forceOfflineReceiver = new ForceOfflineReceiver();
        registerReceiver(forceOfflineReceiver, intentFilter);
    }
    // 应用暂停时所调用
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(forceOfflineReceiver);
    }
    // 创建一个广播接收器
    class ForceOfflineReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(final Context context, final Intent intent) {
            // 写一个强制下线的警告框
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("警告");
            builder.setMessage("你以被强制下线,请重新登录");
            //使此警告框无法被移除
            builder.setCancelable(false);
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                        // 销毁所有活动
                        ActivityCollector.finishAll();
                        // 重新启动LoginActivity
                    Intent intent = new Intent(context,LoginActivity.class);
                       context.startActivity(intent);
                }
            });
            builder.show();
        }
    }
}

LoginActivity:

public class LoginActivity extends BaseActivity {
    private Button btn_login;
    EditText et_account, et_password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        btn_login = findViewById(R.id.login);
        et_account = findViewById(R.id.account);
        et_password = findViewById(R.id.password);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 如果帐号等于liang,密码等于12345就登录成功
                if (et_account.getText().toString().equals("liang") && et_password.getText().toString().equals("12345")) {
                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                    startActivity(intent);
                }else {
                    Toast.makeText(LoginActivity.this, "帐号或密码错误", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

LoginActivity的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <EditText
        android:id="@+id/account"
        android:hint="请输入帐号"
        android:inputType="text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/password"
        android:hint="请输入密码"
        android:inputType="textPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/login"
        android:text="登录"
        android:textSize="20sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
LinearLayout>

MainActivity:

public class MainActivity extends BaseActivity {
    private Button force_offline;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        force_offline = findViewById(R.id.btn_force_offline);
        // 点击按钮发送一个为com.my.force_line广播
        force_offline.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 此处的com.my.force_line是自定义的一个广播
                Intent intent = new Intent("com.my.force_line");
                // 发送广播,此处发送的是标准广播
                sendBroadcast(intent);
            }
        });
    }
}

MainActivity的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <Button
        android:id="@+id/btn_force_offline"
        android:text="强制下线"
        android:textSize="20sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
LinearLayout>

总结:以上内容就是针对qq强制下线(实现一个类似QQ的强制下线功能)详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,qq强制下线(实现一个类似QQ的强制下线功能)部分内容转载自互联网,有帮助可以收藏一下。



上一篇: 升级ios7教程(iPhone4S升级iOS7怎么样)

下一篇:

本文标签:
猜你喜欢