1. 程式人生 > >android之一鍵鎖屏、開啟管理員許可權、取消許可權、解除安裝應用、開啟應用

android之一鍵鎖屏、開啟管理員許可權、取消許可權、解除安裝應用、開啟應用

/*
    * 建立Myadmin繼承DeviceAdminReceiver;
    *在res檔案下建立xml資料夾,在xml下建立按lock.xml
    *在清單檔案中, <!--一鍵鎖屏的廣播接收者-->
        <receiver android:name=".Myadmin"
android:permission="android.permission.BIND_DEVICE_ADMIN"
            >
            <meta-data android:name="android.app.device_admin"
                android:resource="@xml/lock"/>
        </receiver>
    *
    * */
//一鍵鎖屏

public void lockscreen(){
    DevicePolicyManager dc;//裝置管理
    dc= (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
    ComponentName mdeviceAdminSample=new ComponentName(this,Myadmin.class);
    if(dc.isAdminActive(mdeviceAdminSample)){
        dc.lockNow();
        //設定螢幕密碼
        dc.resetPassword("123456",0);

        //清除資料---sd卡的資料
        dc.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
        dc.wipeData(0);//這個是回覆出廠設定
    }else{
        //需要開啟管理員許可權
        return;
    }




}
    

//用程式碼去開啟管理員
    public void openAdmin(View view){
        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 unInstall(){
        //1.先清除管理員許可權
        DevicePolicyManager dc;//裝置管理
        dc= (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
        ComponentName mdeviceAdminSample=new ComponentName(this,Myadmin.class);
        dc.removeActiveAdmin(mdeviceAdminSample);

        //2.普通應用解除安裝

Intent intent=new Intent();
intent.setAction("android.intent.action.VIEW");
intent.setAction("android.intent.action.DELETE");
intent.addCategory("android.intent.category.DEFAULT");intent.setData(Uri.parse("package:"+getPackageName()));startActivity(intent); }
   /*
    *開啟一個應用程式
    *
    *
    * */
    private void startApplication(){
        //查詢這個應用程式的入口activity,吧他開啟起來
        PackageManager pm=getPackageManager();

//查詢某一個應用具有啟動能力的actvity---啟動指定包名的應用
     Intent intent1=   pm.getLaunchIntentForPackage(info.getPackname());

     if (intent1!=null){
         startActivity(intent1);
     }else {

     }

    }

    //查詢出來所有手機上具有啟動能力的activity
    public void deskApp(){
List<String> packnames;
        PackageManager pm=getPackageManager();
        Intent intent=new Intent();
        intent.setAction("android.intent.action.MAIN");
        intent.addCategory("android.intent.category.LAUNCHER");
        //查詢出來所有手機上具有啟動能力的activity
        @SuppressLint("WrongConstant") List<ResolveInfo> infos=pm.queryIntentActivities(intent,PackageManager.GET_INTENT_FILTERS);

       packnames=new ArrayList<String>();
        for (ResolveInfo info:infos){
    String packname=info.activityInfo.packageName;
    Intent i=pm.getLaunchIntentForPackage(packname);
    packnames.add(packname);
}

    }