1. 程式人生 > 程式設計 >Android實現強制下線功能的示例程式碼

Android實現強制下線功能的示例程式碼

一、回顧

  • 上次連載寫了兩個類,一個類ActivityCollector.java用於管理所有的活動;一個類是BaseActivity.java作為所有活動的父類;
  • 還有一個放在layout目錄中的登入介面login.xml

二、登入頁面的活動

接下來寫一個登入頁面的活動,繼承自BaseActivity.java

package com.example.broadcastbestpractice;

import android.content.Intent;
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.login);
 accountEdit = (EditText)findViewById(R.id.account);
 passwordEdit = (EditText)findViewById(R.id.password);
 login = (Button) findViewById(R.id.login);
 login.setOnClickListener( new OnClickListener() {
 @Override
 public void onClick(View v) {
 String account =accountEdit.getText().toString();
 String password = passwordEdit.getText().toString();
 //如果賬號是admin,密碼是12345,就認為登入成功
 if(account.contentEquals("admin") && password.equals("12345")) {
 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();
 }
 } 
 }); 
 }
}
  • 使用findViewById方法分別獲取輸入框以及登入按鈕的例項
  • 然後設定點選事件:先判斷賬號和密碼對不對,對了就是用intent例項進入到主活動中;錯了就重新進入登入頁面,並且打印出一條提示語。
  • 接著改造一下主介面,當然加上強制下線功能就行,不要其他花裡胡哨的。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 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 force offline broadcast" />

</LinearLayout>
  • 非常簡單,就是加了一個按鈕
  • 接下來修改主活動的邏輯
package com.example.broadcastbestpractice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

 @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 OnClickListener() {
 @Override
 public void onClick(View v) {
 Intent intent = new Intent("com.example.broadcastbestpractice.FORCE_OFFLINE");
 sendBroadcast(intent);
 }
 });
 }
}
  • 在點選事件裡面,我們傳送了com.example.broadcastbestpractice.FORCE_OFFLINE廣播,用於通知程式強制使用者下線。
  • 這說明強制使用者下線的功能,應該寫在接收器中,不寫在具體某個活動中,這樣發出“下線”廣播的時候,就能完成下線操作了。
  • 接下來建立一個廣播接收器
package com.example.broadcastbestpractice;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.WindowManager;
import android.content.DialogInterface.OnClickListener;;

public class ForceOfflineReceiver extends BroadcastReceiver{
 @Override
 public void onReceive(final Context context,Intent intent) {
 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
 dialogBuilder.setTitle("Warning");
 dialogBuilder.setMessage("You are forced to be offline,Please try to login again.");
 dialogBuilder.setCancelable(false);
 //下面這句改了
 dialogBuilder.setPositiveButton("OK",new OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog,int which) {
 ActivityCollector.finishAll();//銷燬所有的活動
 Intent intent = new Intent(context,LoginActivity.class);
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 context.startActivity(intent);//重新啟動LoginActivity
 }
 });
 AlertDialog alertDialog = dialogBuilder.create();
 //需要設定AlertDialog的型別,保證廣播接收器中可以正常彈出
 alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
 alertDialog.show();
 }
}

Android實現強制下線功能的示例程式碼

25.1

三、原始碼:

BroadcastBestPractice
https://github.com/ruigege66/Android/tree/master/BroadcastBestPractice

到此這篇關於Android實現強制下線功能的示例程式碼的文章就介紹到這了,更多相關android 強制下線內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!