|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天这个项目很简单,先新建个项目,在mainactivity.java旁边新建ActivityCollector.java- package com.example.xinwei.broadcastbestpractice;
- import android.app.Activity;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by xinwei on 2017/10/11.
- */
- public class ActivityCollector {
- public static List<Activity> activitys=new ArrayList<>();
- public static void addActivity(Activity activity){
- activitys.add(activity);
- }
- public static void removeActivity(Activity activity){
- activitys.remove(activity);
- }
- public static void finishAll(){
- for (Activity activity:activitys
- ) {
- if(!activity.isFinishing()){
- activity.finish();
- }
- }
- }
- }
复制代码
然后新建BaseActivity.java- package com.example.xinwei.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;
- import android.util.Log;
- /**
- * Created by xinwei on 2017/10/11.
- */
- public class BaseActivity extends AppCompatActivity {
- private ForceOffLineReceiver receiver;
- @Override
- protected void onResume() {
- super.onResume();
- IntentFilter intentFilter=new IntentFilter();
- intentFilter.addAction("alltolove.FORCE_OFFLINE");
- receiver=new ForceOffLineReceiver();
- registerReceiver(receiver,intentFilter);
- }
- @Override
- protected void onPause() {
- super.onPause();
- if(receiver!=null){
- unregisterReceiver(receiver);
- receiver=null;
- }
- }
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ActivityCollector.addActivity(this);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- ActivityCollector.removeActivity(this);
- }
- }
复制代码
再建个ForceOffLineReceiver.java文件
- package com.example.xinwei.broadcastbestpractice;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.support.v7.app.AlertDialog;
- import android.util.Log;
- public class ForceOffLineReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(final Context context, Intent intent) {
- Log.i("a","send");
- AlertDialog.Builder builder=new AlertDialog.Builder(context);
- builder.setTitle("Warning");
- builder.setMessage("You are force 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();
- }
- }
复制代码
然后新建LoginActivity.java这个Activity(建活动空项目),修改系统自动生成的activity_login.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">
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="60dp">
- <TextView
- android:layout_width="90dp"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- 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:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="60dp">
- <TextView
- android:layout_width="90dp"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textSize="18sp"
- android:text="Password:"/>
- <EditText
- android:id="@+id/password"
- android:layout_width="90dp"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:inputType="textPassword"/>
- </LinearLayout>
- <Button
- android:id="@+id/login"
- android:layout_width="match_parent"
- android:layout_height="60dp"
- android:text="Login"/>
- </LinearLayout>
复制代码
接下来修改LoginActivity.java的代码- package com.example.xinwei.broadcastbestpractice;
- import android.content.Intent;
- import android.support.v7.app.AppCompatActivity;
- 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.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("admin")&&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();
- }
- }
- });
- }
- }
复制代码 然后修改AndroidManifest.xml文件,目的是把一开始启动的活动更改成LoginActivity,以下为代码- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.xinwei.broadcastbestpractice">
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
-
- </activity>
- <activity android:name=".LoginActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
复制代码 注意:里面的包名不要照抄
然后修改activity_main.xml- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="com.example.xinwei.broadcastbestpractice.MainActivity">
- <Button
- android:id="@+id/force_offline"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="sed force offline broadcast"/>
- </android.support.constraint.ConstraintLayout>
复制代码
修改mainactivity.java- package com.example.xinwei.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("alltolove.FORCE_OFFLINE");
- sendBroadcast(intent);
- }
- });
- }
- }
复制代码
效果图为:
|
|