博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中Intent
阅读量:4647 次
发布时间:2019-06-09

本文共 3088 字,大约阅读时间需要 10 分钟。

1)利用Inent监听应用程序的安装、替换、删除等

与包相关的Intent:

Intent.ACTION_PACKAGE_INSTALL

Intent.ACTION_PACKAGE_ADDED

Intent.ACTION_PACKAGE_REPLACED

Intent.ACTION_PACKAGE_REMOVED

Intent.ACTION_PACKAGE_CHANGED

Intent.ACTION_PACKAGE_RESTARTED

Intent.ACTION_PACKAGE_DATA_CLEARED

首先定义一个Broadcast类——HandlePackageAction,代码如下:

[java]
 
  1. public class HandlePackageAction extends BroadcastReceiver {  
  2.   
  3.     public void onReceive(Context context, Intent intent) {  
  4.         String action = intent.getAction();  
  5.         if (Intent.ACTION_PACKAGE_ADDED.equals(action))   
  6.         {  
  7.             Toast.makeText(context, "有应用被添加", Toast.LENGTH_LONG).show();  
  8.         }   
  9.         else if (Intent.ACTION_PACKAGE_REMOVED.equals(action))  
  10.         {  
  11.             Toast.makeText(context, "有应用被删除", Toast.LENGTH_LONG).show();  
  12.         }  
  13.         else if (Intent.ACTION_PACKAGE_CHANGED.equals(action))   
  14.         {  
  15.             Toast.makeText(context, "有应用被改变", Toast.LENGTH_LONG).show();  
  16.         }  
  17.         else if (Intent.ACTION_PACKAGE_REPLACED.equals(action))  
  18.         {  
  19.             Toast.makeText(context, "有应用被替换", Toast.LENGTH_LONG).show();  
  20.         }  
  21.         else if (Intent.ACTION_PACKAGE_RESTARTED.equals(action))  
  22.         {  
  23.             Toast.makeText(context, "有应用被重启", Toast.LENGTH_LONG).show();  
  24.         }   
  25.         else if (Intent.ACTION_PACKAGE_INSTALL.equals(action))   
  26.         {  
  27.             Toast.makeText(context, "有应用被安装", Toast.LENGTH_LONG).show();  
  28.         }  
  29.     }  
  30.   
  31. }  

 

然后在AndroidManifest.xml中注册HandlePackageAction,内容如下:

 

[html]
 
  1. <receiver android:name=".HandlePackageAction"  
  2.     android:enabled="true">  
  3.     <intent-filter>  
  4.         <action android:name="android.intent.action.PACKAGE_ADDED"></action>  
  5.         <action android:name="android.intent.action.PACKAGE_CHANGED"></action>  
  6.         <action android:name="android.intent.action.PACKAGE_REMOVED"></action>  
  7.         <action android:name="android.intent.action.PACKAGE_REPLACED"></action>  
  8.         <action android:name="android.intent.action.PACKAGE_RESTARTED"></action>  
  9.         <action android:name="android.intent.action.PACKAGE_INSTALL"></action>  
  10.         <data android:scheme="package"></data>  
  11.     </intent-filter>  
  12. </receiver>  

 

 2)安装、卸载应用程序

[java]
 
  1. Intent intent = new Intent(Intent.ACTION_VIEW);  
  2. intent.setDataAndType(Uri.fromFile(new File("/sdcard/Test.apk")),  
  3.         "application/vnd.android.package-archive");  
  4. startActivity(intent); // 安装 程序   
  5.   
  6. Uri packageURI = Uri.parse("package:com.ygc.Test");  
  7. Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);  
  8. startActivity(uninstallIntent);// 正常卸载程序  

 

 

 3)开机启动Activity

首先定义一个Broadcast类——HandleBootComplete,代码如下:

[java]
 
  1. public class HandleBootComplete extends BroadcastReceiver {  
  2.     public void onReceive(Context context, Intent intent) {  
  3.         Intent startActivityIntent = new Intent(context, DrawText.class);  
  4.         startActivityIntent.setAction(Intent.ACTION_MAIN);  
  5.         startActivityIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
  6.         startActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  7.         context.startActivity(startActivityIntent);  
  8.     }  
  9. }  

 

然后在AndroidManifest.xml中注册HandleBootComplete,内容如下:

 

[html]
 
  1. <!-- 添加权限 -->  
  2. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
  3.   
  4.   
  5.     <receiver android:name="HandleBootComplete" android:enabled="true">  
  6.         <intent-filter>  
  7.             <action android:name="android.intent.action.BOOT_COMPLETED" />  
  8.             <category android:name="android.intent.category.HOME" />  
  9.         </intent-filter>  
  10.     </receiver>  

 

 

转载于:https://www.cnblogs.com/bylandu/p/3664461.html

你可能感兴趣的文章
codeforces 712B Memory and Trident
查看>>
并行编译Parallel Building
查看>>
淘宝处理高并发
查看>>
14、equals 与 == 的区别
查看>>
处理爬虫遇到的乱码问题
查看>>
python---help
查看>>
爱你现在的时光 ---白岩松
查看>>
大话RabbitMQ 基础入门
查看>>
非法字符:"\ufeff"
查看>>
BZOJ5300 [Cqoi2018]九连环 【dp + 高精】
查看>>
音乐收藏
查看>>
设为首页,加入收藏js代码
查看>>
android同时使用多个library时的问题
查看>>
今天升级了ADT到ADT 22.6.1,打包混淆的时候就出现了问题
查看>>
百度地图JavaScript API如何在同一页面显示多个地图?
查看>>
揭秘快速提升alexa排名的18种有效方法-2 -#来秀美#
查看>>
计算机专业及软件开发推荐书籍
查看>>
《Java程序设计》 课程教学
查看>>
Lambda--持续学习中
查看>>
简单谈谈面向对象和面向过程的区别
查看>>