如何在android手机安装salesforce apps app

最近做一个功能时有这样一个需求,就是要扫描本地所有已安装的App,来判断是否安装了某个App,如果没有安装,点击按钮就下载,如果已经安装,点击按钮就打开该App。这个里面主要的功能就是获取当前安装的所有APP的信息。所以我就写了一个demo,展示所有已安装App的图标和包名。
进入正题,先看效果图:
上面是扫描到的App的图标和包名。这个demo主要分两块,一块是扫描的到App信息列表,一块是用ListView展示出来。
在展示的时候,我们只用到了两个应用信息,一个是应用的图标,一个是应用的包名。所以我们先定义一个类来代表我们扫描到的App。public class MyAppInfo {
private String appN
public MyAppInfo(Drawable image, String appName) {
this.image =
this.appName = appN
public MyAppInfo() {
public Drawable getImage() {
public void setImage(Drawable image) {
this.image =
public String getAppName() {
return appN
public void setAppName(String appName) {
this.appName = appN
只有两个属性,两个构造方法,和系统生成的get ,set方法,没什么好说的,image放置图标,appName放置包名。定义好了放置应用信息的类,接下来再定义一个ApkTool的工具类,用来帮助我们获取当前所安装的App。
* Created by gray_dog3 on 16/3/3.
* 扫描本地安装的应用,工具类
public class ApkTool {
String TAG = &ApkTool&;
public static List&MyAppInfo& mLocalInstallApps =
public static List&MyAppInfo& scanLocalInstallAppList(PackageManager packageManager) {
List&MyAppInfo& myAppInfos = new ArrayList&MyAppInfo&();
List&PackageInfo& packageInfos = packageManager.getInstalledPackages(0);
for (int i = 0; i & packageInfos.size(); i++) {
PackageInfo packageInfo = packageInfos.get(i);
//过滤掉系统app
if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) {
MyAppInfo myAppInfo = new MyAppInfo();
myAppInfo.setAppName(packageInfo.packageName);
if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {
myAppInfo.setImage(packageInfo.applicationInfo.loadIcon(packageManager));
myAppInfos.add(myAppInfo);
}catch (Exception e){
Log.e(TAG,&===============获取应用包信息失败&);
return myAppI
里面就只有一个方法,根据所传的packageManager获得所有已安装的应用的包信息。然后遍历,去除没有图标的包信息,把所有图标的应用放到myAppInfos列表里。非常简单,这里注意注释掉部分,是过滤掉所有系统应用的,因为有时候我们只想知道第三方应用列表,便于管理。
最上面的mLocalInstallApps是开始留给做缓存用的,由于在扫描的时候要另外开一个线程,加缓存还牵涉到加锁,同步的问题,讲起来比较麻烦,所以暂且先不讲缓存。只讲这一个知识点。其实加上缓存代码也很简单。
好了,ApkTool写好了,我们怎么去调用呢。不上代码都是耍流氓,直接看代码:
private void initAppList(){
new Thread(){
public void run() {
super.run();
//扫描得到APP列表
final List&MyAppInfo& appInfos = ApkTool.scanLocalInstallAppList(MainActivity.this.getPackageManager());
mHandler.post(new Runnable() {
public void run() {
mAppAdapter.setData(appInfos);
}.start();
就这几行,我们在MainActivity里面写了这个方法,在onCreat()里去调用,初始化列表。开一个线程,然后在run()方法里面做我们想做的事,调用我们在ApkTool里写好的方法。返回封装好的,只有图标和包名的应用信息列表。这里解释下,因为扫描比较耗时,可能会引起ANR,所以开了一个子线程,去调用ApkTool来扫描应用信息。扫描到结果以后,我们要通知Adapter来更新UI,Android不允许在非UI线程里面更新UI的,所以这里用了Handler去post一个Runnable对象。如果对Handler不是很懂,可以去看下官方怎么讲。我后面也会写一篇相关的博客来专门讲Handler。还是先简单说下吧:(懂的跳过)
由于Android是移动设备,用户交互几乎全部通过屏幕,用户的全部注意力几乎都集中在屏幕上,屏幕交互卡顿,或者UI信息有丝毫的延迟,用户的感觉是很不爽的。所以Android把UI显示放到主线程里,并且强烈建议耗时操作放到子线程里。但是别的线程把事情做好了,总要通知UI,展示界面变化吧,比如新闻客户端里,连接网络加载信息的线程,把新闻从服务端拉过来了,如果它直接去操作界面,结束loading,显示内容,这样也不是不可以,但是,如果没有约束,UI展示的时序行就难保证了,各种事情做好了就来操作UI,那UI显示就乱掉了。所以android是拒绝的。但是UI线程也要知道事情做完了。所以UI线程就给子线程提供了一个交互的信使Handler。就是UI线程说,你想跟哥汇报什么事,先跟我的Handler说,我每隔一段时间再把我的Handler叫过来,取一件处理。我们在UI线程里new
Handler的时候也就相当于雇了一个信使,然后子线程就可以用这个信使来给UI线程传信了。在Android里我们通过Handler可以传递一些Message,也可以通过传Runnable对象,这样Runnable的run()方法里面的内容就是我们想要在UI线程里要执行的代码。
扯完了Handler细节很多,但作用就是这个,还是建议认真看下官方文档。
关于ListView部分就不多讲了,直接贴出代码:
public class MainActivity extends AppCompatActivity {
private ListView lv_app_
private AppAdapter mAppA
public Handler mHandler = new Handler();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_app_list = (ListView) findViewById(R.id.lv_app_list);
mAppAdapter = new AppAdapter();
lv_app_list.setAdapter(mAppAdapter);
initAppList();
private void initAppList(){
new Thread(){
public void run() {
super.run();
//扫描得到APP列表
final List&MyAppInfo& appInfos = ApkTool.scanLocalInstallAppList(MainActivity.this.getPackageManager());
mHandler.post(new Runnable() {
public void run() {
mAppAdapter.setData(appInfos);
}.start();
class AppAdapter extends BaseAdapter {
List&MyAppInfo& myAppInfos = new ArrayList&MyAppInfo&();
public void setData(List&MyAppInfo& myAppInfos) {
this.myAppInfos = myAppI
notifyDataSetChanged();
public List&MyAppInfo& getData() {
return myAppI
public int getCount() {
if (myAppInfos != null && myAppInfos.size() & 0) {
return myAppInfos.size();
public Object getItem(int position) {
if (myAppInfos != null && myAppInfos.size() & 0) {
return myAppInfos.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mViewH
MyAppInfo myAppInfo = myAppInfos.get(position);
if (convertView == null) {
mViewHolder = new ViewHolder();
convertView = LayoutInflater.from(getBaseContext()).inflate(R.layout.item_app_info, null);
mViewHolder.iv_app_icon = (ImageView) convertView.findViewById(R.id.iv_app_icon);
mViewHolder.tx_app_name = (TextView) convertView.findViewById(R.id.tv_app_name);
convertView.setTag(mViewHolder);
mViewHolder = (ViewHolder) convertView.getTag();
mViewHolder.iv_app_icon.setImageDrawable(myAppInfo.getImage());
mViewHolder.tx_app_name.setText(myAppInfo.getAppName());
return convertV
class ViewHolder {
ImageView iv_app_
TextView tx_app_
最后说下,如果想实时监听有app安装或者卸载,可以在资源清单里面注册监听安装和卸载app的广播,也可以在Activity里面监听,只要收到广播后再调用上面的initAppList()方法即可。如果你要实现跟我一样的功能,检测一个应用是否安装,可以在遍历的时候去拿包名比较,就可以的到结果。如果你要列出所有的系统应用或所有的非系统应用,上面注释出也给出了过滤方法。
好了,传送门:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1868次
排名:千里之外
(3)(3)(2)(1)Android手机上的应用一般都装在哪个目录下_Android_应用_安装_
Android手机上的应用一般都装在哪个目录下Android手机上的应用一般都装在哪个目录下?多数有三个安装位置,一种是Android系统自带的应用。它位于“/system/app”下,比如系统拨号程序、通讯录、蓝牙等Android系统内置的应用。第二种则是安装在手机内存上的应用。位置在“/data/app/”下,多数是手机生产厂商的定制应用,还有一种是安装在SD卡上的应用。它的位置在“sdcard/具体程序名”下,是用户在插入SD卡后自行安装的应用。借助豌豆荚、91手机助手的“移动应用到SD卡”功能移动的应用也在该位置。
欢迎转发,请注明来源◆◆转载自 &a href="/p/3z3o.htm" title="Android手机上的应用一般都装在哪个目录下"&Android手机上的应用一般都装在哪个目录下_Android_应用_安装_&/a&精选阅读关键词阅读Win8.1应用商店如何安装软件Win8.1应用商店如何安装软件?... #1Android手机安装LockNow应用无法删除怎么办我在手机里安装了LockNow应用,现在想删除,却发现无法删除,请问该怎么办?... #2怎样在安装Android应用前删除其某些权限现在很多Android应用都会要求非常多不相干的权限,请问可以在安装前就将应用的权限废止掉吗?... #3怎么卸载Android手机预装软件怎么卸载Android手机预装软件?其中一些软件很烦人总是自启动,浪费我好多流量而且耗电,怎么才可以卸载呢?... #4WP8手机中如何通过SD卡安装应用WP8手机中如何通过SD卡安装应用?... #5三星安卓智能机安装软件时提示应用程序未安装怎么办我使用的是三星安卓智能手机,在安装软件时出现“应用程序未安装”的错误提示。请问这该如何解决?... #6怎么用LBE隐私卫士控制Android应用的权限怎么用LBE隐私卫士控制Android应用的权限?... #7WP8手机删除了一个购买的应用如何找回我不小心删除了一个Windows Phone 8商店购买的应用程序,请问怎么找回来呢?... #8热门推荐12345678910热门关键词随机推荐
| Copyright (C)&&2007 - 2015&&&&All Rights Reserved<&&&版权所有&&&蜀ICP备号-1天极传媒:天极网全国分站
您现在的位置:
& >&安卓入手第一步 应用程序安装教程
安卓手机入手第一步 应用程序安装方法详解天极网手机频道 06:00
  随着行业的发展,智能手机早已不是“奢侈品”,而是成为了“生活必需品”。据悉, 2011年全国共卖出7000万台智能手机,占国内手机市场份额的32%。这一数字还在快速增长。相比非智能手机,智能手机最大的特点在于便捷的和丰富的第三方。作为近些年发展最快速的智能手机操作系统,系统以便捷的操作和大于10万个的第三方应用,受到手机厂商和用户的普遍认可。当我们拿到一款Android手机,除基本的打、发信息外,若想体会第三方应用所带来的便捷,就会存在“哪里找”、“怎么装”、“装哪里”等问题。如同个人一样,光有操作系统是没用的,要想进行文字编辑,至少还得装Office一样。今天笔者为刚刚入手Android手机不久的朋友在第三方应用搜索、安装等方面进行一个介绍。希望可以有所帮助。我们以时下最为流行的Android2.系统作为例子来进行介绍。
  方法一:手机与PC连接
  手机第三方应用通常是以“.APK”为扩展名的文件,文件大小一般在几MB左右。用PC下载后再复制到手机上,通过手机安装。这是最基本的应用安装方式。手机第一次与PC连接时,PC会自动安装手机驱动。同时手机会显示“USB设置”菜单。通常会有“仅充电”、“存储装置”、“ADB调试(串口连接/PC套件)”、“USB绑定”等四个选项。我们选择“存储装置”,PC中“我的电脑”里的“有可移动存储的设备”中显示有新的可移动设备。使用方法如同我们熟悉的一样,用户可将需要安装的应用放在手机的某个位置,然后关闭USB存储设备,用手机安装应用。
  如图,笔者将应用拷入手机的“DOWNLOAD”文件夹,关闭USB存储设备后,打开手机文件管理器找到相应文件夹,按照提示便可顺利安装该应用。
  俗话说,世界是由懒人推动的。上面介绍的方法虽能顺利安装应用,但安装步骤较为繁琐,而且也比较费时间。笔者为刚走进“智能手机世界”的朋友介绍两款已经非常成熟的Android平台智能手机PC端管理工具,用它们安装应用既方便又快捷。它们分别是和91手机助手。两款软件操作方式基本相同,笔者以豌豆荚为例进行介绍。
  笔者将手机与安装好豌豆荚的PC相连,选择ADB调试选项。豌豆荚会自动识别手机型号并安装驱动。进入豌豆荚,界面右上角可以搜索你所需要的应用。如果用户并不明确自己需要什么应用,豌豆荚还提供了众多知名应用网站的应用信息以及音乐、视频、壁纸、等,这些都在界面左侧呈现。点击需要下载的程序,豌豆荚会下载并在界面左下角显示下载速度和下载程度。下载完毕后,系统会自动将应用安装到手机中,“一站式服务”,免去了繁琐的手动安装。
1分页导航1.方法一:手机与PC连接2.
(作者:李炜责任编辑:李炜)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
整机数码游戏软件

我要回帖

更多关于 salesforce1 app 的文章

 

随机推荐