編輯:關於Android編程
(1)布局文件activity_main.xml如下:
(2)MainActivity.java
package com.xuliugen.lockscreen;
import com.itheima.lockscreen.R;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
/**
* 設備策略服務
*/
private DevicePolicyManager dpm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
}
/**
* 用代碼去開啟管理員
*/
public void openAdmin(View view) {
// 創建一個Intent
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
// 我要激活誰
ComponentName mDeviceAdminSample = new ComponentName(this,MyAdmin.class);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
// 勸說用戶開啟管理員權限
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"哥們開啟我可以一鍵鎖屏,你的按鈕就不會經常失靈");
startActivity(intent);
}
/**
* 一鍵鎖屏
*/
public void lockscreen(View view) {
ComponentName who = new ComponentName(this, MyAdmin.class);
if (dpm.isAdminActive(who)) {
dpm.lockNow();// 鎖屏
dpm.resetPassword("", 0);// 設置屏蔽密碼
// 清除Sdcard上的數據
// dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
// 恢復出廠設置
// dpm.wipeData(0);
} else {
Toast.makeText(this, "還沒有打開管理員權限", 1).show();
return;
}
}
/**
* 卸載當前軟件
*/
public void uninstall(View view) {
// 1.先清除管理員權限
ComponentName mDeviceAdminSample = new ComponentName(this,
MyAdmin.class);
dpm.removeActiveAdmin(mDeviceAdminSample);
// 2.普通應用的卸載
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
}
(3)根據API文檔可知,需要一個類繼承DeviceAdminReceiver:
package com.xuliugen.lockscreen;
import android.app.admin.DeviceAdminReceiver;
/**
* 特殊的廣播接收者
*
* @author xuliugen
*
*/
public class MyAdmin extends DeviceAdminReceiver {
}
(5)廣播接受者的設置(清單文件):
運行效果:
先看一下效果:效果就是這樣,看一下實現,其實也沒多難,就是想開源出來供小伙伴們使用,如有不合理地方,希望大家多多指正。1.自定義PopWindow首先我們分析一下,這樣的
Property Animation中最重要,最基礎的一個類就是ValueAnimator了。Property Animation利用ValueAnimator來跟蹤記錄
概述在設計應用的時候,我們應該熱愛極簡主義,簡單就是好的,對於很多用戶來說,復雜的東西並不受歡迎。我要實現的是根據不同的情況去顯示不同的加載效果,隨用隨調,效果是借鑒於某
繼上篇json解析,我用了原生的json解析,但是在有些情況下我們不得不承認,一些優秀的json解析框架確實十分的好用,今天我們為了博客的保質保量,也就不分開寫,我們直接