当前位置:  编程技术>移动开发

android实现获取正在运行的应用程序

    来源: 互联网  发布时间:2014-10-12

    本文导语:  因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序: 还是先看图吧: 这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击...

因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序:
还是先看图吧:

这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击(回复到你打开的界面)和长按事件(关闭应用程序)。
看看代码吧:
直接贴出来再加上注释吧(直接写在一个文件里):
代码如下:

package andorid.tasks;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SimpleAdapter.ViewBinder;
public class ManagerTasksActivity extends Activity {
private ListView listView;
private PackageManager pm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.task_main);
pm= this.getPackageManager();//获得包管理器
listView=(ListView)findViewById(R.id.list_view);
LoadList(this);//加载listview
}
private void LoadList(Context context)
{
ArrayList list=new ArrayList();
try{
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); //获得ActivityManager对象
List runningTasks = am.getRunningAppProcesses(); //获得所有正在进行的程序存放在一个list中
for(int i=0;i1024*1024)
map.put("info", size/1024/1024+" MB");
else
map.put("info", size/1024+" KB");
map.put("packagename", runningTasks.get(i).processName.toString());//获得包名给后面用
list.add(map);
}
}
}catch(Exception ex)
{}
SimpleAdapter listadapter=new SimpleAdapter(this, list, R.layout.task_list, new String[]{"icon","name","info"}, new int []{R.id.icon,R.id.name,R.id.info});
listView.setAdapter(listadapter);//listview加载识别器
//下面这个方法主要是用来刷新图片,因为pInfo.getInfo(runningTasks.get(i).processName).loadIcon(pm)获得图片不能被显示出
listadapter.setViewBinder(new ViewBinder(){
public boolean setViewValue(View view,Object data,String textRepresentation){
if(view instanceof ImageView && data instanceof Drawable){
ImageView iv=(ImageView)view;
iv.setImageDrawable((Drawable)data);
return true;
}
else
return false;
}
});
//为listView添加item的点击事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position,
long id) {
//get the item of the list to a hashmap
HashMap map=(HashMap)parent.getItemAtPosition(position);
//get package name from map
String packageName=(String) map.get("packagename");//从前面的map中获得包名
//if we onclick the item then start the application
//根据包名打开应用程序
Intent intent=new Intent();
intent =pm.getLaunchIntentForPackage(packageName);
startActivity(intent);
finish();//打开应用程序之后注销本应用程序
}
});
//为listview的item添加长按事件
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView parent, View view,
int position, long id) {
final HashMap long_map=(HashMap)parent.getItemAtPosition(position);
new AlertDialog.Builder(ManagerTasksActivity.this).setTitle("Are you sure close")
.setPositiveButton("sure", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String packageName=(String)long_map.get("packagename");
//base packagename to kill appliction
//根据包名杀死应用程序
am.killBackgroundProcesses(packageName);
//refash list
//刷新listview
LoadList(ManagerTasksActivity.this);
}
}).setNegativeButton("cancle", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
return false;
}
});
}
}
//类PackageInfo主要包括ApplicationInfo getInfo(String name)方法
class PackageInfo {
private List appList;
public PackageInfo(Context context){
//get all package data
PackageManager pm = context.getApplicationContext().getPackageManager();
appList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
}
public ApplicationInfo getInfo(String name){
if(name == null){
return null;
}
for(ApplicationInfo appInfo : appList){
if(name.equals(appInfo.processName)){
return appInfo;
}
}
return null;
}
}

xml文件:
lsit:
代码如下:










main:
代码如下:






在manifest文件中要加一个权限:
代码如下:



主要是前面的am.killBackgroundProcesses(packageName);方法要这个权限。

    
 
 

您可能感兴趣的文章:

  • 开发android应用程序时,用java调用so库输出日志问题
  • Android获取应用程序名称(ApplicationName)示例
  • android开发教程之获取使用当前api的应用程序名称
  • 分享Android平板电脑上开发应用程序不能全屏显示的问题解决
  • 解析Android应用程序运行机制
  • Android 程序应用的生命周期
  • android通过代码的形式来实现应用程序的方法
  • ANDROID应用程序的混淆打包分享
  • Android判断当前应用程序处于前台还是后台的两种方法
  • Android的Service应用程序组件基本编写方法
  • android 为应用程序创建桌面快捷方式技巧分享
  • Android实现获取应用程序相关信息列表的方法
  • Android获取应用程序大小的方法
  • android通过蓝牙接收文件打开时无法自动选择合适的应用程序
  • android 完全退出应用程序实现代码
  • Android 完全退出应用程序的解决方法
  • Android应用程序签名步骤及相关知识介绍
  • Android 静默方式实现批量安装卸载应用程序的深入分析
  • Android应用程序窗口(Activity)窗口对象(Window)创建指南
  • android获取手机唯一标识的方法 iis7站长之家
  • android获取手机唯一标识的方法
  • android 如何获取MCC/MNC控制小区广播的开启
  • android当前apn的状态以及获取方法
  • Android手机获取root权限并实现关机重启功能的方法
  • Android获取手机SIM卡运营商信息的方法
  • 用Android Location获取当前地理位置的方法
  • Android取消EditText自动获取焦点默认行为
  • Android获取屏幕方向及键盘状态的小例子
  • android开发中获取手机分辨率大小的方法
  • android获取当前手机号示例程序
  • 在Android中 获取正在运行的Service 实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 运行于Android的记忆软件 iRemember
  • Android中代码运行指定Apk的简单方法
  • android工程下不能运行java main程序的解决方法
  • Intel HAXM为Android 模拟器加速解决模拟器运行慢的问题
  • Android APK文件在电脑(PC虚拟机)上面运行方法
  • unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
  • 安卓编辑和运行lua代码 android-lua-run
  • Android中设置只有程序第一次运行才显示的界面实现思路
  • 使用python编写android截屏脚本双击运行即可
  • android教程之使用asynctask在后台运行耗时任务
  • 在Android线程池里运行代码任务实例
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • android 键盘事件和屏幕事件的运行原理及交互实现
  • android的编译和运行过程深入分析
  • 解析android res 运行错误的问题
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3