Android安装卸载程序解析

本文转自:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-3637.html

Android安装卸载程序的源码中我们知道:

复制代码
< activity android:name=".PackageInstallerActivity">      
< intent-filter>      
< action android:name="android.intent.action.VIEW" />      
< category android:name="android.intent.category.DEFAULT" />      
< data android:scheme="content" />      
< data android:scheme="file" />      
< data android:mimeType="application/vnd.android.package-archive" />      
< /intent-filter>      
< /activity>     
    
< activity android:name=".UninstallerActivity">      
< intent-filter>      
< action android:name="android.intent.action.VIEW" />      
< action android:name="android.intent.action.DELETE" />      
< category android:name="android.intent.category.DEFAULT" />      
< data android:scheme="package" />      
< /intent-filter>      
< /activity> 
复制代码

因为根据里面的权限我们可以 从sd卡安装一个程序:

String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";      
Intent intent = new Intent(Intent.ACTION_VIEW);   
  
intent.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive");   
//或者   
//intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");    
  
startActivity(intent);    

Android安装卸载程序的操作中要想卸载一个程序;

Uri packageURI = Uri.parse("package:com.android.myapp");      
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);      
startActivity(uninstallIntent); 

默认是不支持安装非市场程序的 因此判断一下

复制代码
int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);      
if (result == 0) {      
// show some dialog here      
// ...      
// and may be show application settings dialog manually      
Intent intent = new Intent();      
intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);      
startActivity(intent);     
}   
复制代码

 

posted @   似水流云  阅读(412)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示