基本信息
源码名称:android 手机小卫士完整源码下载
源码大小:10.93M
文件格式:.rar
开发语言:Java
更新时间:2014-10-20
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
手机卫士源码,内涵apk,源码,密钥,关键地方含有注释
部分代码如下:
package com.mowen.mobilesafe;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.StatFs;
import android.text.format.Formatter;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.mowen.mobilesafe.domain.AppInfo;
import com.mowen.mobilesafe.engine.AppInfoProvider;
import com.mowen.mobilesafe.utils.DensityUtil;
/**
* ============================================================
*
* 版权 :手机卫士 版权所有 (c) 2014
*
* 作者:mowen
*
* 版本 :1.0
*
* 创建日期 : 2014-9-10 上午12:45
*
* 描述 :软件管理
*
* 修订历史 :
*
* ============================================================
**/
public class AppManagerActivity extends Activity implements OnClickListener {
private static final String TAG = "AppManagerActivity";
private TextView tv_avail_rom;
private TextView tv_avail_sd;
private ListView lv_appmanager;
private LinearLayout ll_loading;
private List<AppInfo> appInfos;
private TextView tv_status;
private LinearLayout ll_start;
private LinearLayout ll_share;
private LinearLayout ll_uninstall;
/**
* 被点击的条目
*/
private AppInfo appInfo;
/**
* 用户程序集合
*/
private List<AppInfo> userAppInfos;
/**
* 系统程序集合
*/
private List<AppInfo> systemAppInfos;
private PopupWindow popupWindow;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
ll_loading.setVisibility(View.GONE);
lv_appmanager.setAdapter(new AppInfoAdapter());
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_manager);
tv_avail_rom = (TextView) findViewById(R.id.tv_avail_rom);
tv_avail_sd = (TextView) findViewById(R.id.tv_avail_sd);
tv_avail_sd.setText("SD卡可用:"
getTotalSpace(Environment.getExternalStorageDirectory()
.getAbsolutePath()));
tv_avail_rom.setText("内存可用:"
getTotalSpace(Environment.getDataDirectory()
.getAbsolutePath()));
lv_appmanager = (ListView) findViewById(R.id.lv_appmanager);
tv_status = (TextView) findViewById(R.id.tv_status);
lv_appmanager.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Object obj = lv_appmanager.getItemAtPosition(position);
if (obj != null) {
dismissPopupWindow();
appInfo = (AppInfo) obj;
View contentView = View.inflate(getApplicationContext(),
R.layout.popup_item, null);
ll_uninstall = (LinearLayout) contentView
.findViewById(R.id.ll_uninstall);
ll_start = (LinearLayout) contentView
.findViewById(R.id.ll_start);
ll_share = (LinearLayout) contentView
.findViewById(R.id.ll_share);
ll_share.setOnClickListener(AppManagerActivity.this);
ll_start.setOnClickListener(AppManagerActivity.this);
ll_uninstall.setOnClickListener(AppManagerActivity.this);
// 播放动画有一个前提 就是窗体必须有背景
popupWindow = new PopupWindow(contentView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
// ☆ 注意: 必须要设置背景
popupWindow.setBackgroundDrawable(new ColorDrawable(
Color.TRANSPARENT));
int[] location = new int[2];
view.getLocationInWindow(location);
//根据手机手机的分辨率 把60dip 转化成 不同的值 px
int px = DensityUtil.dip2px(getApplicationContext(), 60);
popupWindow.showAtLocation(parent, Gravity.TOP
Gravity.LEFT, px, location[1]);
AlphaAnimation aa = new AlphaAnimation(0.5f, 1.0f);
aa.setDuration(200);
ScaleAnimation sa = new ScaleAnimation(0.5f, 1.0f, 0.5f,
1.0f, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0.5f);
sa.setDuration(200);
AnimationSet set = new AnimationSet(false);
set.addAnimation(sa);
set.addAnimation(aa);
contentView.startAnimation(set);
}
}
});
// tv_status.setPadding(0, 0, 0, 0);
lv_appmanager.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
dismissPopupWindow();
if (userAppInfos != null && systemAppInfos != null) {
if (firstVisibleItem > userAppInfos.size()) {
tv_status.setText("系统程序(" systemAppInfos.size() ")");
} else {
tv_status.setText("用户程序(" userAppInfos.size() ")");
}
}
}
});
ll_loading = (LinearLayout) findViewById(R.id.ll_loading);
fillData();
}
private void fillData() {
ll_loading.setVisibility(View.VISIBLE);
new Thread() {
public void run() {
appInfos = AppInfoProvider.getAppInfos(getApplicationContext());
userAppInfos = new ArrayList<AppInfo>();
systemAppInfos = new ArrayList<AppInfo>();
for (AppInfo appinfo : appInfos) {
if (appinfo.isUserApp()) {
userAppInfos.add(appinfo);
} else {
systemAppInfos.add(appinfo);
}
}
handler.sendEmptyMessage(0);
};
}.start();
}
/**
* 获取某个路径可用的空间
*
* @param path
* @return
*/
public String getTotalSpace(String path) {
StatFs stat = new StatFs(path);
long count = stat.getAvailableBlocks();
long size = stat.getBlockSize();
return Formatter.formatFileSize(this, count * size);
}
private void dismissPopupWindow() {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
popupWindow = null;
}
}
private class AppInfoAdapter extends BaseAdapter {
@Override
public int getCount() {
// 多了两个textview的item 所以 1 1
return userAppInfos.size() 1 systemAppInfos.size() 1;
}
// 控制每个位置显示的内容。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final AppInfo appInfo;
if (position == 0) {// 显示一个textview告诉用户有多少个用户应用
TextView tv = new TextView(getApplicationContext());
tv.setText("用户程序 (" userAppInfos.size() ")");
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GRAY);
return tv;
} else if (position == (userAppInfos.size() 1)) {
TextView tv = new TextView(getApplicationContext());
tv.setText("系统程序 (" systemAppInfos.size() ")");
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GRAY);
return tv;
} else if (position <= userAppInfos.size()) {
// 用户程序。
int newposition = position - 1;
appInfo = userAppInfos.get(newposition);
} else {
// 系统程序
int newposition = position - 1 - userAppInfos.size() - 1;
appInfo = systemAppInfos.get(newposition);
}
View view;
ViewHolder holder;
if (convertView != null && convertView instanceof RelativeLayout) {
view = convertView;
holder = (ViewHolder) view.getTag();
} else {
view = View.inflate(getApplicationContext(),
R.layout.list_app_item, null);
holder = new ViewHolder();
holder.iv = (ImageView) view.findViewById(R.id.iv_icon);
holder.tv_name = (TextView) view.findViewById(R.id.tv_name);
holder.tv_location = (TextView) view
.findViewById(R.id.tv_location);
view.setTag(holder);
holder.bt_uninstall = (Button) view.findViewById(R.id.bt_uninstall);
}
holder.tv_location.setTextColor(Color.GRAY);
holder.iv.setImageDrawable(appInfo.getIcon());
holder.tv_name.setText(appInfo.getName());
if (appInfo.isInRom()) {
holder.tv_location.setText("手机内存");
} else {
holder.tv_location.setText("外部存储卡");
}
holder.bt_uninstall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
uninstall(appInfo);
}
});
return view;
}
@Override
public Object getItem(int position) {
AppInfo appInfo;
if (position == 0) {// 显示一个textview告诉用户有多少个用户应用
return null;
} else if (position == (userAppInfos.size() 1)) {
return null;
} else if (position <= userAppInfos.size()) {
// 用户程序。
int newposition = position - 1;
appInfo = userAppInfos.get(newposition);
} else {
// 系统程序
int newposition = position - 1 - userAppInfos.size() - 1;
appInfo = systemAppInfos.get(newposition);
}
return appInfo;
}
@Override
public long getItemId(int position) {
return 0;
}
}
static class ViewHolder {
ImageView iv;
TextView tv_name;
TextView tv_location;
Button bt_uninstall;
}
@Override
public void onClick(View v) {
dismissPopupWindow();
switch (v.getId()) {
case R.id.ll_share:
Log.i(TAG, "分享:" appInfo.getName());
shareApplication();
break;
case R.id.ll_start:
Log.i(TAG, "启动:" appInfo.getName());
startApplication();
break;
case R.id.ll_uninstall:
Log.i(TAG, "卸载:" appInfo.getName());
uninstall(appInfo);
break;
}
}
/**
* 开启应用
*/
private void startApplication() {
Intent intent = new Intent();
String packname = appInfo.getPackname();
PackageManager pm = getPackageManager();
try {
PackageInfo packinfo = pm.getPackageInfo(packname, PackageManager.GET_ACTIVITIES);
ActivityInfo[] activityInfos = packinfo.activities;
if(activityInfos!=null&&activityInfos.length>0){
ActivityInfo activityinfo = activityInfos[0];
intent.setClassName(packname, activityinfo.name);
startActivity(intent);
}else{
Toast.makeText(this, "哎呀,这个应用程序没界面", 0).show();
}
} catch (NameNotFoundException e) {
e.printStackTrace();
Toast.makeText(this, "没法开这个应用。", 0).show();
}
}
/**
* 分享应用程序
*/
private void shareApplication() {
Intent intent = new Intent();
// <action android:name="android.intent.action.SEND" />
// <category android:name="android.intent.category.DEFAULT" />
// <data android:mimeType="text/plain" />
intent.setAction("android.intent.action.SEND");
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,
"推荐你使用一个软件,软件的名称叫:" appInfo.getName()
",下载地址:https://play.google.com/store/apps/details?id=" appInfo.getPackname());
startActivity(intent);
}
private void uninstall(AppInfo appInfo) {
if (appInfo.isUserApp()) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DELETE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" appInfo.getPackname()));
startActivityForResult(intent, 0);
} else {
Toast.makeText(this, "系统应用需要有root权限后才能卸载", 0).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
fillData();
}
}