android监听其他程序的安装、卸载或者手动安装、卸载

完整代码:

public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** * 注册监听,或者在AndroidManifest.xml中配置receive节点 *//*BroadcastReceiver installedReceiver = new BootReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.PACKAGE_ADDED"); filter.addAction("android.intent.action.PACKAGE_REMOVED"); filter.addDataScheme("package"); this.registerReceiver(installedReceiver, filter); */}public void install(View v){Log.i("安装应用ss","install");Log.e("sss", "aaaa");Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);File file = new File(Environment.getExternalStorageDirectory(),"Html.apk");intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");startActivity(intent);}public void uninstall(View v){String packageName ="com.example.unistallapplication";Log.i("卸载应用","卸载");if(checkPackage(packageName)){//packageInstall observer = new PackageInstallObserver();//pm.installPackage(mPackageURI, observer, installFlags);Intent intent = new Intent();intent.setAction(Intent.ACTION_DELETE);intent.setData(Uri.parse("package:com.example.testnotice"));startActivity(intent);}}public boolean checkPackage(String packageName){boolean flag=false;if(packageName=="" || "".equals(packageName))return false;try {getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);return true;} catch (Exception e) {Log.i("error","应用不存在");return false;}}

布局文件activity_main.xml:

     

监听:

import android.support.v7.app.ActionBarActivity;import android.annotation.SuppressLint;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.webkit.WebView;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;public class BootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {PackageManager manager = context.getPackageManager();Log.i("这是监听事件:", "监听");if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "安装成功"+packageName, Toast.LENGTH_LONG).show();}if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "卸载成功"+packageName, Toast.LENGTH_LONG).show();}if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "替换成功"+packageName, Toast.LENGTH_LONG).show();}}}

AndroidManifest.xml:

                                                                                                                                                                       
红色的代码是注册监听事件,以上就是所有代码



更多相关文章

  1. Android常用代码
  2. Android拦截、监听系统返回键事件
  3. android 蓝牙打印程序源代码
  4. Android graphics画图的点击事件处理
  5. [转]Android事件处理
  6. [Android]代码实现StateListDrawable
  7. Android仿计算器布局代码
  8. linux和windows平台下下载android sdk的源代码【Z】

随机推荐

  1. 预防Android内存泄露
  2. android 添加一个新的android 键值
  3. android使用字体
  4. @+id/android:list"和"@android:id/list"
  5. Android延时执行方法
  6. android 6 what
  7. Android中实现滑动效果
  8. Android源码仓库和Repo工具使用
  9. 根据终端分配不同的url地址
  10. android:singleLine="true",[...]没有全