Android-获取手机已经安装的程序-推送好友

本文介绍如何使用Android API获取手机中已安装的应用程序列表,并提供示例代码展示如何检查特定应用是否安装、卸载应用及判断应用是否安装在SD卡上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从手机中获得已安装的程序或指定程序,推送给好友!

package com.example.viper;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.SimpleAdapter.ViewBinder;


public class TuiJianActivity extends Activity implements OnClickListener{
private ListView listView;
private List<Map<String, Object>> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
//Log.v(TAG, "created");
super.onCreate(savedInstanceState);
setContentView(R.layout.viper_sz_list);


listView = (ListView) this.findViewById(R.id.SZ_listView);
list = new ArrayList<Map<String, Object>>();
List<PackageInfo> appListInfo = this.getPackageManager()
.getInstalledPackages(0);

for (PackageInfo p : appListInfo) {
// if (p.applicationInfo.sourceDir.startsWith("/system/viper/")) {
// continue;
// }
Map<String, Object> map = new HashMap<String, Object>();
Drawable icon = null;
String appName = "";
try {
appName = this.getPackageManager()
.getApplicationLabel(p.applicationInfo).toString();
icon = this.getPackageManager().getApplicationIcon(
p.applicationInfo.packageName);
} catch (Exception e) {
e.printStackTrace();
}
if (appName.equals("Viper")) {//我的程序名称
map.put("name", appName);
map.put("package", p.applicationInfo.packageName);
map.put("sourceDir", p.applicationInfo.sourceDir);
map.put("icon", icon);
list.add(map);
}
}
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.viper_sz_pic,
new String[] { "name", "icon" }, new int[] { R.id.sz_name,
R.id.sz_icon });
adapter.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.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (list.get(position).get("sourceDir") != null) {
File f = new File(list.get(position).get("sourceDir")
.toString());
// 调用android分享窗口
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(intent);
}
}


});
}


@Override
protected void onDestroy() {
//Log.v(TAG, "destroy");
super.onDestroy();
}


@Override
public void onClick(View v) {


}
}

//********************************************************************************************************************以下是转载内容

有时候我们会查询手机里面是否安装了某个程序,或者获取已经安装软件名称的集合。

android这边提供了相应的接口。

[java]  view plain copy
  1. final PackageManager packageManager = getActivity().getPackageManager();//获取packagemanager   
  2. List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息   
  3.     if(pinfo != null){   
  4.     for(int i = 0; i < pinfo.size(); i++){   
  5.         String packName = pinfo.get(i).packageName;   
  6.         Log.d("info""-->"+packName);  
  7.     }   
  8. }   

上面的例子可以打印出安装软件的包名。每个程序的包名在android手机里都是唯一的。

判断手机是否安装了某个程序,如果安装了此程序,删除它。

[java]  view plain copy
  1. private void uninstallSoftware(Context context, String name) {  
  2.     final PackageManager packageManager = context.getPackageManager();  
  3.     try {  
  4.         PackageInfo pInfo = packageManager.getPackageInfo(name,  
  5.                 PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);  
  6.         if(pInfo!=null){  
  7.             //删除软件  
  8.             Uri uri = Uri.parse("package:"+ name);  
  9.             Intent intent = new Intent(Intent.ACTION_DELETE, uri);  
  10.             context.startActivity(intent);  
  11.         }  
  12.     } catch (NameNotFoundException e) {  
  13.         e.printStackTrace();  
  14.     }  
  15. }  
从android2.2开始软件可以安装到SD卡上,所以也有相应接口判断程序是否安装到SD卡上

[java]  view plain copy
  1. private void isInstallOnSd(Context context,String name){  
  2.     PackageManager pm=context.getPackageManager();  
  3.     ApplicationInfo appInfo;  
  4.     try {  
  5.         appInfo = pm.getApplicationInfo(name, 0);  
  6.         if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {  
  7.                // App on sdcard  
  8.             Log.d("info""app on sd");  
  9.         }  
  10.     } catch (NameNotFoundException e) {  
  11.         e.printStackTrace();  
  12.     }   
  13. }  
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值