編輯:關於Android編程
android 實現屏幕鎖定需要用戶手工去激活設備管理
直接貼代碼了
MainActivity.java
package com.example.lockscreen;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
/**
* 主Activity類
* 作為初始UI等
* @author wangwei
*
*/
public class MainActivity extends Activity {
private Button enableDevice,disableDevice,lockScreen;
/*
* 這是設備管理的主類。通過它可以實現屏幕鎖定、屏幕亮度調節、出廠設置等功能。
*/
private DevicePolicyManager dpm;
/*
* componentName可以用於啟動第三方程序的代碼
*/
private ComponentName componentName;
/**
* 打印日志信息
* @param msg
* 要打印信息
*/
private void log(String msg){
Log.i("AdminReceiver", msg);
}
/**
* 顯示提示信息
* @param context
* @param msg
*/
private void showToast(Context context, String msg){
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/**
* 初始化
*/
private void init(){
log("初始化");
enableDevice = (Button) findViewById(R.id.enableDevice);
disableDevice = (Button) findViewById(R.id.disableDevice);
lockScreen = (Button) findViewById(R.id.lockScreen);
enableDevice.setOnClickListener(listener);
disableDevice.setOnClickListener(listener);
lockScreen.setOnClickListener(listener);
//獲取系統服務
dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
componentName = new ComponentName(this, AdminReceiver.class);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.enableDevice:
//激活設備管理
enableDevice();
break;
case R.id.disableDevice:
//禁用設備管理
disableDevice();
break;
case R.id.lockScreen:
//鎖屏(調用系統鎖屏)
lockScreen();
break;
default:
break;
}
}
};
/**
* 激活設備管理
*/
private void enableDevice(){
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "測試。。。說明。。。");
startActivityForResult(intent, 0);
}
/**
* 禁用設備管理
*/
private void disableDevice(){
boolean bActive = dpm.isAdminActive(componentName);
if(bActive){
dpm.removeActiveAdmin(componentName);
}
}
/**
* 鎖屏(調用系統鎖屏)
*/
private void lockScreen(){
boolean bActive = dpm.isAdminActive(componentName);
if (bActive) {
dpm.lockNow();
}
}
}
package com.example.lockscreen;
import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
/**
* 設備管理消息接收類
* @author wangwei
*
*/
public class AdminReceiver extends DeviceAdminReceiver {
/**
* 打印日志信息
* @param msg
* 要打印信息
*/
private void log(String msg){
Log.i("AdminReceiver", msg);
}
/**
* 顯示提示信息
* @param context
* @param msg
*/
private void showToast(Context context, String msg){
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
@Override
public DevicePolicyManager getManager(Context context) {
log("調用了getManager方法");
return super.getManager(context);
}
@Override
public ComponentName getWho(Context context) {
log("調用了getWho方法");
return super.getWho(context);
}
/**
* 禁用
*/
@Override
public void onDisabled(Context context, Intent intent) {
log("調用了onDisabled方法");
showToast(context, "禁用設備管理");
super.onDisabled(context, intent);
}
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
log("調用了onDisableRequested方法");
return super.onDisableRequested(context, intent);
}
/**
* 激活
*/
@Override
public void onEnabled(Context context, Intent intent) {
log("調用了onEnabled方法");
showToast(context, "啟動設備管理");
super.onEnabled(context, intent);
}
@Override
public void onPasswordChanged(Context context, Intent intent) {
log("調用了onPasswordChanged方法");
super.onPasswordChanged(context, intent);
}
@Override
public void onPasswordFailed(Context context, Intent intent) {
log("調用了onPasswordFailed方法");
super.onPasswordFailed(context, intent);
}
@Override
public void onPasswordSucceeded(Context context, Intent intent) {
log("調用了onPasswordSucceeded方法");
super.onPasswordSucceeded(context, intent);
}
@Override
public void onReceive(Context context, Intent intent) {
log("調用了onReceive方法");
super.onReceive(context, intent);
}
@Override
public IBinder peekService(Context myContext, Intent service) {
log("調用了peekService方法");
return super.peekService(myContext, service);
}
}
android 圖片選擇器 圖片預覽
需求:近段時間公司有要求寫一個類似於微信發送圖片時,用來選擇照片的一個圖片浏覽器,本來想在網上找一個直接拿來用,找尋無果,只能自己寫了。相信有很多網頁也有這
在Android app中實現九(n)宮格圖片連續滑動效果
今天寫這篇文章的緣由是前一段時間一個網友在我的博客上面留言,想要實現在GridLayout(相當於九宮格)中點擊每項可左右滑動顯示該宮格的圖片,當該宮格的圖
Android仿支付寶、京東的密碼鍵盤和輸入框
首先看下效果圖一:布局代碼鍵盤由0~9的數字,刪除鍵和完成鍵組成,也可以根據需求通過GridView適配器的getItemViewType方法來定義。點擊鍵的時候背景有變
Android開發筆記(一百一十二)開發工具
Eclipse/ADTADT是Google在Eclipse基礎上封裝了Android開發工具的環境,最新版本是2014年7月2日發布的adt-bundle-windows