zoukankan      html  css  js  c++  java
  • Android 强制实现下线功能

    界面

    1.登录界面  activity_login.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">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:orientation="horizontal">
    
            <TextView
    
                android:layout_width="90dp"
                android:layout_gravity="center_vertical"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Account:"/>
    
            <EditText
                android:id="@+id/account"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center_vertical"/>
        </LinearLayout>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:orientation="horizontal">
    
            <TextView
                android:layout_width="90dp"
                android:layout_gravity="center_vertical"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Password:"/>
    
            <EditText
                android:id="@+id/password"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="center_vertical"
                android:inputType="textPassword"/>
        </LinearLayout>
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:id="@+id/login"
            android:text="Login"/>
    
    </LinearLayout>

    2.主界面 activity_main.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/force_offline"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Send offline broadcast"/>
    
    
    
    </LinearLayout>

    JAVA
    1.MainActivity.java

    package com.example.ken.broadcastbestpractice;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends BaseActivity {
    
        @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 View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent("com.example.broadcastbestpractice.FORCE_OFFLINE");
                    sendBroadcast(intent);
                }
            });
        }
    }

    2.BaseActivity.java

    package com.example.ken.broadcastbestpractice;
    
    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.support.annotation.Nullable;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    
    public class BaseActivity extends AppCompatActivity {
    
        private ForceOfflineReceive receiver;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActivityCollector.addActivity(this);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            ActivityCollector.removeActivity(this);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction("com.example.broadcastbestpractice.FORCE_OFFLINE");
            receiver = new ForceOfflineReceive();
            registerReceiver(receiver,intentFilter);
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            if (receiver !=null){
                unregisterReceiver(receiver);
                receiver = null;
            }
        }
    
        class ForceOfflineReceive extends BroadcastReceiver{
    
            @Override
            public void onReceive(final Context context, Intent intent) {
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Warning");
                builder.setMessage("You are forced to be offline. Please try to login again.");
                builder.setCancelable(false);
                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        ActivityCollector.finishAll();
                        Intent intent = new Intent(context, LoginActivity.class);
                        context.startActivity(intent);
                    }
                });
                builder.show();
            }
        }
    }

    3.LoginActivity.java

    package com.example.ken.broadcastbestpractice;
    
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    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(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            accountEdit = (EditText) findViewById(R.id.account);
            passwordEdit = (EditText) findViewById(R.id.password);
            login = (Button) findViewById(R.id.login);
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String account = accountEdit.getText().toString();
                    String password = passwordEdit.getText().toString();
                    if (account.equals("account") && password.equals("123456")){
                        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();
                    }
                }
            });
        }
    }

    4.ActivityCollector.java

    package com.example.ken.broadcastbestpractice;
    
    import android.app.Activity;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ActivityCollector {
    
        public static List<Activity> activities = new ArrayList<>();
    
        public static void addActivity(Activity activity){
            activities.add(activity);
        }
    
        public static void removeActivity(Activity activity){
            activities.remove(activity);
        }
    
        public static void finishAll(){
            for (Activity activity:activities){
                if (!activity.isFinishing()){
                    activity.finish();
                }
            }
        }
    }

    实现的效果:

  • 相关阅读:
    webbrowser在vb中叫
    linux小记之安装bin或deb程序
    9011,9012,9013,9014,8050,8550三极管的区别
    中兴v880刷机全过程。原创亲测
    Slackware的启动(init)过程
    sysvinit
    rc.S 分析【转自CSDN 】
    linux 解压rar zip
    slackware启动脚本详解
    工作
  • 原文地址:https://www.cnblogs.com/KEN-zj/p/9286076.html
Copyright © 2011-2022 走看看