`
zhouxiaoli521
  • 浏览: 555546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

监听Android应用程序是否卸载成功

阅读更多
-------------卸载Android应用程序的方法---------------
/**
* 卸载Android应用程序
*
* @param packageName
*/
public static void uninstallApk(Context ctx, String packageName) {
Uri packageURI = Uri.parse("package:" + packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
ctx.startActivity(uninstallIntent);
}


---------------------判断是否卸载成功---------------------------


/**
* Created by IntelliJ IDEA.
* User: 罗代均
* Date: 2010-8-16
* Time: 18:11:19
*/
public class AppUninstallActivity extends Activity {

private List<ApplicationInfo> mApps;

private Handler handler = new Handler();

  private UninstallReceiver mUninstallReceiver;

private String uninstallPackage;

private GridView gvApps;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_uninstall);
mUninstallReceiver = new UninstallReceiver();

gvApps = (GridView) findViewById(R.id.gv_uninstall_apps);

gvApps.setOnItemClickListener(new GridView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
  ApplicationInfo app = mApps.get(position);
uninstallPackage = app.packageName;
AppUtils.uninstallApk(AppUninstallActivity.this, uninstallPackage);
}
});


//查询可卸载的应用
query();

//监听卸载广播
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
this.registerReceiver(mUninstallReceiver, filter);
}

@Override
protected void onDestroy() {
  this.unregisterReceiver(mUninstallReceiver);
super.onDestroy();
}

private class UninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (uninstallPackage != null && ("package:" + uninstallPackage).equals(intent.getDataString())) {
query();
Toast.makeText(AppUninstallActivity.this, R.string.uninstall_success, Toast.LENGTH_SHORT).show();
}
}
}

private void query() {
ThreadPoolFactory.getInstance().execute(new Runnable() {
public void run() {
mApps = AppUtils.getUnintalledApp(getPackageManager());
final AppUninstallAdapter adapter = new AppUninstallAdapter(AppUninstallActivity.this, mApps);
handler.post(new Runnable() {
public void run() {
gvApps.setAdapter(adapter);
}
});
}
});
}
}
http://hi.baidu.com/luodaijun/blog/item/0887a8c37e9dfc58b219a808.html 

 

分享到:
评论

相关推荐

    Android监听自己的程序被卸载

    Android通过调用C来监听自己的程序被卸载。

    Android监听应用程序安装和卸载

    Android中的监听应用程序如何安装和卸载

    Android监听应用程序安装和卸载.docx

    Android监听应用程序安装和卸载.docx

    Android监听自身卸载,弹出用户反馈调查

    JNI 允许开发者在 Android 应用程序中使用 C 语言,通过 C 语言可以实现监听自身卸载的功能。 为了实现这个功能,需要了解以下几个知识点: 1. 通过 C 语言,C 进程监视:在 C 语言中,可以使用 fork() 函数创建一...

    Android程序监听自身被卸载

    Android程序监听自身被卸载后打开浏览器

    Android 监听程序的安装和卸载

    应用开发中有需要监听到程序是否安装或者卸载成功,在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()获得所安装的包名...

    android卸载应用程序

    android卸载已安装应用代码,提供点击打开应用功能,采用ListView显示所有已安装应用(剔除了原装应用)。 在此代码中可以学到,...调用系统卸载功能、打开已安装应用和如何判断已安装应用是否为预安装应用的方法!

    Android App监听自身卸载反馈统计

    作者venshine,源码AppUninstall,方案监听系统卸载广播:只能监听到其他应用的卸载广播,无法监听到自己是否被卸载。读取系统 log:第三方软件卸载无法得知。静默安装另一个程序,监听自己是否被卸载:需要 root ...

    Android代码-AppUninstall

    监听系统卸载广播:只能监听到其他应用的卸载广播,无法监听到自己是否被卸载。 读取系统log:第三方软件卸载无法得知。 静默安装另一个程序,监听自己是否被卸载:需要root权限。 Java线程轮询,监听/data/data/{...

    android监听安装和卸载示例

    Android应用程序的安装和卸载事件,是由系统进行监听并全局广播的,支持1.5(android 3)以上,因此,如果想要监听获取应用的安装和卸载事件,只需要自定义一个BroadcastReceiver,来对系统广播进行监听和处理

    android卸载应用程序-Android代码类资源

    android卸载已安装应用代码,提供点击打开应用功能,采用ListView显示所有已安装应用(剔除了原装应用)。 在此代码中可以学到,...调用系统卸载功能、打开已安装应用和如何判断已安装应用是否为预安装应用的方法!

    android权限大全

    这个权限通常用于需要监听应用程序卸载事件的应用程序,例如应用程序管理器等。 android.permission.BROADCAST_STICKY: 该权限用于广播sticky intent,例如广播当前的音乐播放状态。这个权限通常用于需要广播事件...

    Android 监听apk安装替换卸载广播的实现代码

    首先是要获取应用的安装状态,通过广播的形式以下是和应用程序相关的Broadcast ActionACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播)ACTION_PACKAGE_...

    基于Android Studio环境下Button点击事件的实现.pdf

    首先,Android Studio 是基于 IntelliJ IDEA 的开发环境,学生在搭建 Android Studio 环境时经常会碰到内置的 APP 或模拟器不能使用,即使重装也没有用,此时一般先到控制面板中卸载软件,然后到计算机系统盘的 ...

    Android开发资料合集-World版!

    1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity ...

    Android 开发技巧

    1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity ...

    学习android wifi子系统总结.doc

    Android Wi-Fi 子系统总结 Android Wi-Fi 子系统是一个复杂的系统,它涉及到多个组件和模块,包括 Wi-Fi 服务、Wi-Fi ...了解 Android Wi-Fi 子系统的架构、组件、流程和关键技术对于开发 Android 应用程序非常重要。

    Android闹铃服务AlarmManager用法深入分析

    对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,linux实现的设备名 为”/dev/alarm...

    adb1.0.26包含fastboot.exe

    INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含不兼容设备 CPU 应用程序二进制接口的 native code INSTALL_FAILED_MISSING_FEATURE 应用使用了设备不可用的功能 INSTALL_FAILED_CONTAINER_ERROR 1. sdcard 访问失败; 2...

    PlayAndroid:第一个涉及网络获取数据的Android应用,慢慢来,应该可以从各路大神学到很多知识

    第一个涉及网络获取数据的Android应用,慢慢来,应该可以从各路大神学到很多知识 增加了本地数据库的注册登陆功能,使用了郭神的litepal框架。 增加了一个循环的线程,一直在监听用户是否登陆,如果登陆的话进行则...

Global site tag (gtag.js) - Google Analytics