首先呢,看到这么长的标题,是不是感觉这些功能有点难以实现呢,哈哈,其实并没有想象中的那么复杂,下面就跟着笔者来一起学习一下这些功能是怎么实现的吧!
1.建立一个所有活动的父类,继承自AppcompatAvtivity类,用来实现全局广播,与强制下线功能相关联:
package com.example.pc_ly.dl;
import android.app.Activity;
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.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
/**
* Created by pc_ly on 2018/10/29.
*/
public class BaseActivity extends AppCompatActivity {//所有活动继承的一个类,用来实现全局广播,
Intent aa=getIntent();
private Focreof receiver;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addAvtivity(this);
}
protected void onResume(){
super.onResume();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("com.example.office");
receiver=new Focreof();
registerReceiver(receiver,intentFilter);
}
protected void onPause(){
super.onPause();
if(receiver!=null){
unregisterReceiver(receiver);
receiver=null;
}
}
protected void onDestroy(){
super.onDestroy();
ActivityCollector.removeActivity(this);}
class Focreof extends BroadcastReceiver{//当广播成功响应时,弹出一个对话框,显示一些信息,并且之后会回到登录的界面
public void onReceive(final Context context, final Intent intent){
;
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle("警告");
builder.setMessage("Dear:"+intent.getStringExtra("t")+"! You are forced to be offline. Please try to login again.");
builder.setPositiveButton("OK",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
ActivityCollector.finishAll();
Intent intent=new Intent(context,MainActivity.class);
context.startActivity(intent);
}
});
builder.show();
}
}
}
2.建立一个管理所有活动的类:
package com.example.pc_ly.dl;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by pc_ly on 2018/10/29.
*/
public class ActivityCollector {//管理所有活动
public static List<Activity> activities=new ArrayList<>();
public static void addAvtivity(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();
}
}
activities.clear();
}
}
3.建立一个初始化数据库的类,并创建对应的表
package com.example.pc_ly.dl;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
import java.sql.SQLClientInfoException;
/**
* Created by pc_ly on 2018/11/20.
*/
public class DateBaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK="create table userData ("
+ "id text, "
+"password text)";//创建表的语句
private Context mContext;
public DateBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int version){//初始化一个数据库
super(context,name,factory,version);
mContext=context;
}
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_BOOK);//执行创建表的语句
Toast.makeText(mContext,"Create succeed",Toast.LENGTH_SHORT).show();
}
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
}
}
4.先将登录的界面通过代码写出来,这个比较简单,我就直接上代码了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width=&