手机安全卫士的一些总结

编程入门 行业动态 更新时间:2024-09-28 01:24:36

手机<a href=https://www.elefans.com/category/jswz/34/1716255.html style=安全卫士的一些总结"/>

手机安全卫士的一些总结

Android Studio设置界面无标题:

    Android Studio 里新建Activity默认继承的不是Activity,需要改成继承Activity再重新导包就可以。

关于listview节省资源的用法:

    复用contentview,减少子孩子的查询次数,新建viewHolder类,用语存储子孩子的位置。太多就分批次加载数据,每页显示多少数据,下滑继续加载。

关于复杂listview:

   通过判断position与展示的关系,分成两个list分别展示需要展示的内容

private  class MyAdapter extends BaseAdapter{@Override
    public int getCount() {//return appInfoList.size();
        return userInfoList.size()+1+sysInfoList.size()+1;
    }@Override
    public Object getItem(int position) {return null;
    }@Override
    public long getItemId(int position) {return 0;
    }@Override
    public View getView(int position, View convertView, ViewGroup parent) {View view;
        ViewHolder viewHoleder;
        AppInfo appInfo;
        if(position==0){TextView tv= new TextView(AppManagerActivity.this);
            tv.setTextColor(Color.WHITE);
            tv.setBackgroundColor(Color.GRAY);
            tv.setText("用户程序"+userInfoList.size()+"个");
            return tv;
        }else if(position==(userInfoList.size()+1)){TextView tv= new TextView(AppManagerActivity.this);
            tv.setTextColor(Color.WHITE);
            tv.setBackgroundColor(Color.GRAY);
            tv.setText("系统程序"+sysInfoList.size()+"个");
            return tv;
        }else if(position<=userInfoList.size()){//用户程序
            int newposition= position-1;
            appInfo=userInfoList.get(newposition);
        }else {int newposition=position-2-userInfoList.size();
            appInfo=sysInfoList.get(newposition);
        }if(convertView!=null&&convertView instanceof RelativeLayout){view=convertView;
            viewHoleder= (ViewHolder) view.getTag();
        }else{viewHoleder= new ViewHolder();
            LayoutInflater inflater=getLayoutInflater();
            view = inflater.inflate(R.layout.app_info_list, null);
            viewHoleder.app_icon= (ImageView) view.findViewById(R.id.app_icon);
            viewHoleder.app_name= (TextView) view.findViewById(R.id.app_name);
            viewHoleder.app_rom_sd= (TextView) view.findViewById(R.id.app_rom_sd);
            viewHoleder.app_size= (TextView) view.findViewById(R.id.app_size);
            /*viewHoleder.app_uninstall= (Button) view.findViewById(R.id.app_uninstall);*/
            viewHoleder.app_is_lock= (ImageView) view.findViewById(R.id.app_is_lock);
            view.setTag(viewHoleder);
        }//AppInfo app= appInfoList.get(position);
        viewHoleder.app_icon.setImageDrawable(appInfo.getIcon());
        viewHoleder.app_name.setText(appInfo.getName());
        if(appInfo.isInRom()){viewHoleder.app_rom_sd.setText("系统存储");
        }else{viewHoleder.app_rom_sd.setText("外部存储");
        }// 查询是否加锁
        if(appLockDao.find(appInfo.getPackageName())){viewHoleder.app_is_lock.setImageResource(R.drawable.lock);
        }return view;
    }
}
static class ViewHolder {ImageView app_icon;
    TextView app_name;
    TextView app_rom_sd;
    TextView app_size;
    ImageView app_is_lock;
}

broadcastreceiver是唯一一个可以用代码注册的控件。

    常见方法是启动一个服务,在服务里面启动广播接受者,关闭服务的时候讲广播接受者销毁掉。可以控制是否开启一个功能。


@Override
public void onCreate() {am= (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    lockReciver= new LockReciver();
    registerReceiver(lockReciver,new IntentFilter(Intent.ACTION_SCREEN_OFF));
    super.onCreate();
}@Override
public void onDestroy() {unregisterReceiver(lockReciver);
    lockReciver=null;
    super.onDestroy();
}
class  LockReciver extends BroadcastReceiver{@Override
    public void onReceive(Context context, Intent intent) {Log.i(TAG, "手机锁屏了");
        List<ActivityManager.RunningAppProcessInfo>runningProcess= am.getRunningAppProcesses();
        for(ActivityManager.RunningAppProcessInfo running:runningProcess){am.killBackgroundProcesses(running.processName);
        }}
}
回调函数解耦合

/**
 * 进度条设置的回调函数
 */
public interface CallBack {/**
     * @param max 设置进度条的最大值
     */
    public void setMax(int max);

    /**
     * @param progress 设置进度条的增长
     */
    public void setprogress(int progress);
}/**
 * @param context 上下文
 * @throws Exception xml文件
 *                   1.获得流(sd卡的路径+名字)输出流
 *                   2.XmlSerializer Xml.newSerializer();xml生成器
 *                   <document><tag></tag></document>
 */
public static void backUpSms(Context context, CallBack callBack) throws Exception {ContentResolver resolver = context.getContentResolver();
    File file = new File(Environment.getExternalStorageDirectory(), "backup.xml");
    FileOutputStream fos = new FileOutputStream(file);
    XmlSerializer serializer = (XmlSerializer) Xml.newSerializer();
    serializer.setOutput(fos, "utf-8");
    serializer.startDocument("utf-8", true);
    serializer.startTag(null, "smss");
    Uri uri = Uri.parse("content://sms/");
    Cursor cursor =resolver.query(uri, new String[]{"body", "address", "type", "date"}, null, null, null);
    callBack.setMax(cursor.getCount());//设置进度条的最大值
    int procress = 0;//进度条的初始值
    if (cursor != null) {while (cursor.moveToNext()) {String body = cursor.getString(0);
            String address = cursor.getString(1);
            String type = cursor.getString(2);
            String date = cursor.getString(3);
            serializer.startTag(null, "sms");
            serializer.startTag(null, "body");
            serializer.text(body);
            serializer.endTag(null, "body");
            serializer.startTag(null, "address");
            serializer.text(address);
            serializer.endTag(null, "address");
            serializer.startTag(null, "type");
            serializer.text(type);
            serializer.endTag(null, "type");
            serializer.startTag(null, "date");
            serializer.text(date);
            serializer.endTag(null, "date");
            serializer.endTag(null, "sms");
            procress++;
            callBack.setprogress(procress);//每循环一次进度条+1
        }cursor.close();
    }serializer.endTag(null, "smss");
    serializer.endDocument();
}
a_tools_backup_sms.setOnClickListener(new View.OnClickListener() {@Override
    public void onClick(View v) {pd=new ProgressDialog(AToolsActivity.this);
        pd.setTitle("正在备份短信");
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.show();
        new Thread(new Runnable() {@Override
            public void run() {try {SmsUntil.backUpSms(AToolsActivity.this, new SmsUntil.CallBack() {@Override
                        public void setMax(int max) {pd.setMax(max);
                        }@Override
                        public void setprogress(int progress) {pd.setProgress(progress);

                        }});
                    runOnUiThread(new Runnable() {@Override
                        public void run() {Toast.makeText(AToolsActivity.this, "备份成功", Toast.LENGTH_SHORT).show();
                        }});
                } catch (Exception e) {runOnUiThread(new Runnable() {@Override
                        public void run() {Toast.makeText(AToolsActivity.this, "备份失败", Toast.LENGTH_SHORT).show();
                        }});
                    e.printStackTrace();
                }finally {pd.dismiss();
                }}}).start();
    }
});
解耦和

Activity的进入效果:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android=""
    android:fromXDelta="0%p"
    android:fromYDelta="0"
    android:toXDelta="-100%p"
    android:toYDelta="0"
    android:duration="500"
    >
</translate>
从哪个xy到那个xy用多长时间

自定义button按钮的点击样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="">
    <item android:state_pressed="true"
        android:drawable="@drawable/btn_green_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
        android:drawable="@drawable/btn_green_pressed" /> <!-- focused -->
    <item android:drawable="@drawable/btn_green_normal" /> <!-- default -->
</selector>
按下,松开,默认

Android Studio加载数据库到手机的问题:

Android Studio需要自己建一个assets文件夹,数据库文件在加载到手机时会出问题,我们需要把拓展名改了例如改成。MP3然后加载到手机时再把拓展名改回来就可以用了。

Android Studio绑定远程服务的方法:

同样需要自己新建一个aidl文件夹,将需要绑定的aidl文件放在跟aidl文件内部一样包名的包中,然后Build→Rebuild Project,绑定成功的话generated/source/debug里看到

暂时就整理了这么些如果有不对的地方还请指正

更多推荐

手机安全卫士的一些总结

本文发布于:2023-06-23 13:34:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/849937.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:安全卫士   手机

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!