转载自:http://blog.csdn.net/santicom/article/details/7465751
调用所有匹配的第三应用:
-
publicclassAppFilterActivityextendsActivity
-
{
-
@Override
-
publicvoidonCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
-
Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
-
intent.setType("image/png");
-
-
IntentchooserIntent=Intent.createChooser(intent,"Selectapp");
-
if(chooserIntent==null)
-
{
-
return;
-
}
-
startActivity(chooserIntent);
-
}
-
}
过滤app列表中的某个app:
1,
-
publicclassAppFilterActivityextendsActivity
-
{
-
@Override
-
publicvoidonCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
-
Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
-
intent.setType("image/png");
-
-
showSetAsList(intent);
-
}
-
-
privatevoidshowSetAsList(Intentintent)
-
{
-
PackageManagermPackageManager=AppFilterActivity.this.getPackageManager();
-
List<ResolveInfo>mShareAppLst=mPackageManager.queryIntentActivities(intent,0);
-
List<ResolveInfo>mAppLst=newArrayList<ResolveInfo>();
-
intnumActivities=mShareAppLst.size();
-
-
for(inti=0;i<numActivities;i++)
-
{
-
ResolveInforeinfo=mShareAppLst.get(i);
-
if(reinfo.activityInfo.name.equals("com.android.contacts.activities.AttachPhotoActivity"))
-
{
-
continue;
-
}
-
mAppLst.add(reinfo);
-
}
-
ChooseAppAdaptermAdapter=newChooseAppAdapter(mAppLst,AppFilterActivity.this.getApplicationContext());
-
AlertDialog.BuilderalertDialog=newAlertDialog.Builder(AppFilterActivity.this);
-
alertDialog.setTitle("selectapp");
-
alertDialog.setAdapter(mAdapter,newShareAppItemClickListener(intent,mAppLst,mAdapter)).create().show();
-
-
}
-
-
publicclassChooseAppAdapterextendsBaseAdapter
-
{
-
privateList<ResolveInfo>mDialogList=null;
-
privatePackageManagermPackageManager=null;
-
privateLayoutInflatermInflater=null;
-
-
publicChooseAppAdapter(List<ResolveInfo>mDialogList,Contextcontext)
-
{
-
this.mDialogList=mDialogList;
-
this.mPackageManager=context.getPackageManager();
-
sort();
-
mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
}
-
-
@Override
-
publicintgetCount()
-
{
-
returnmDialogList!=null?mDialogList.size():0;
-
}
-
-
@Override
-
publicObjectgetItem(intposition)
-
{
-
returnposition;
-
}
-
-
@Override
-
publiclonggetItemId(intposition)
-
{
-
returnposition;
-
}
-
-
@Override
-
publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
-
{
-
if(position>=mDialogList.size())
-
{
-
returnnull;
-
}
-
Viewview;
-
if(convertView==null)
-
{
-
view=mInflater.inflate(R.layout.share_menu_item,parent,false);
-
}else
-
{
-
view=convertView;
-
}
-
ImageViewcategoryIcon=(ImageView)view.findViewById(R.id.menu_icon);
-
categoryIcon.setImageDrawable(((ResolveInfo)mDialogList.get(position)).loadIcon(mPackageManager));
-
TextViewcategoryName=(TextView)view.findViewById(R.id.menu_title);
-
categoryName.setText(((ResolveInfo)mDialogList.get(position)).loadLabel(mPackageManager));
-
returnview;
-
}
-
-
publicvoidreleaseData()
-
{
-
mDialogList.clear();
-
mPackageManager=null;
-
mInflater=null;
-
}
-
-
publicvoidsort()
-
{
-
if(getCount()>1)
-
{
-
ResolveInfo.DisplayNameComparatorrComparator=newResolveInfo.DisplayNameComparator(mPackageManager);
-
Collections.sort(mDialogList,rComparator);
-
}
-
}
-
}
-
-
publicclassShareAppItemClickListenerimplementsDialogInterface.OnClickListener
-
{
-
Intentintent=null;
-
List<ResolveInfo>mShareAppLst=null;
-
ChooseAppAdaptermAdapter=null;
-
-
publicShareAppItemClickListener(Intentintent,List<ResolveInfo>mShareAppLst,ChooseAppAdaptermAdapter)
-
{
-
this.intent=intent;
-
this.mShareAppLst=mShareAppLst;
-
this.mAdapter=mAdapter;
-
}
-
-
@Override
-
publicvoidonClick(DialogInterfacedialog,intwhich)
-
{
-
IntentresolvedIntent=newIntent(intent);
-
ResolveInfoinfo=mShareAppLst.get(which);
-
ActivityInfoai=info.activityInfo;
-
resolvedIntent.setComponent(newComponentName(ai.applicationInfo.packageName,ai.name));
-
-
try
-
{
-
startActivity(resolvedIntent);
-
}catch(Exceptionex)
-
{
-
ex.printStackTrace();
-
}
-
releaseData();
-
}
-
-
publicvoidreleaseData()
-
{
-
intent=null;
-
mShareAppLst.clear();
-
mAdapter.releaseData();
-
}
-
}
-
}
2, share_menu_item.xml
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:gravity="center_vertical"
-
android:orientation="horizontal">
-
-
<ImageView
-
android:id="@+id/menu_icon"
-
android:layout_width="48dip"
-
android:layout_height="48dip"
-
android:layout_marginBottom="2dip"
-
android:layout_marginLeft="5dip"
-
android:layout_marginTop="2dip"/>
-
-
<TextView
-
android:id="@+id/menu_title"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:ellipsize="marquee"
-
android:gravity="center_vertical"
-
android:paddingLeft="10dip"
-
android:textAppearance="?android:attr/textAppearanceMedium"/>
-
-
</LinearLayout>
分享到:
相关推荐
总结来说,通过Android的`PackageManager`服务,开发者可以轻松地获取设备上的所有应用、系统应用、第三方应用以及满足特定条件的应用列表。在实际开发中,可以根据需要对这些信息进行过滤和处理,以实现各种功能。...
在用户界面设计上,可能需要显示一个应用列表,展示所有可卸载的第三方应用。这可以通过遍历`PackageInfo`数组,筛选出第三方应用,并将其相关信息(如应用名、图标等)展示在列表视图中。用户选择某个应用后,触发...
这个类提供了获取所有应用列表的方法,例如`getInstalledPackages()`。通过遍历返回的`PackageInfo`对象,我们可以获取应用的名称、图标、版本号、权限等信息。 系统应用信息获取: 获取系统应用信息的过程与获取...
3. **修改源码**:删除或注释掉限制第三方应用接收开机广播的代码,确保所有应用都有权接收开机广播。 4. **编译系统镜像**:修改后,需要重新编译系统镜像,这可能需要完整的Android构建环境和相关工具链。 5. **...
本篇文章将详细阐述如何在Android中进行第三方应用的打开操作。 首先,我们需要理解Android中的Intent。Intent在Android中扮演着消息传递的角色,它可以用来启动活动(Activity)、服务(Service)或者广播接收器...
3. **过滤系统应用与第三方应用**: `ApplicationInfo`类有一个成员变量`flags`,它包含应用的各种标志。其中,`ApplicationInfo.FLAG_SYSTEM`表示系统应用。我们可以遍历`installedApps`列表,根据`flags`判断每个...
本章节的源码是《Google Android应用案例开发大全》一书的配套材料,专注于第三章的内容,旨在帮助读者深入理解Android开发的核心概念和技术。 在第三章中,我们可能涉及以下几个关键知识点: 1. **Android Studio...
【Android-监听自身应用卸载】是Android开发中一个特殊的需求,它涉及到系统广播的注册与接收、服务的实现以及第三方库libcurl的使用。在这个实例工程中,开发者旨在实现当应用被卸载时,自动触发一个网络请求,或者...
实现这种效果通常需要自定义View或使用第三方库,例如ViewPager2,配合适配器展示城市卡片,同时处理滑动事件和选中状态。 综上所述,"android城市列表选择、定位"是一个涉及数据管理、用户界面设计、地理位置服务...
在Android开发中,构建一个根据字母排序的城市列表是一项常见的任务,尤其在开发地图应用或信息检索类应用时。这个任务涉及到UI设计、数据处理以及排序算法等多个知识点。下面将详细阐述实现这一功能所需的关键技术...
第3章 Android应用程序框架 3.1 第一个Android应用程序 3.2 Android项目结构 3.3 APK文件结构 3.4 Android应用程序权限 3.5 Activity及其生命周期 3.5.1 什么是Activity 3.5.2 Activity生命周期 3.6...
1. **OpenCV库**:OpenCV(开源计算机视觉库)是Android图像处理常用的第三方库,它提供了大量的图像处理函数,如滤波、色彩转换、边缘检测等。开发者可以利用OpenCV的API来实现图像过滤器功能。 2. **Bitmap类**:...
同时,`RecyclerView`或`AdapterView`通常用于展示过滤后的列表,它们可以配合动画库,如`androidx.core.animation`或第三方库`Lottie`,实现平滑的过渡动画。 `Yalantis-SearchFilter-5e7f141`可能是项目的Git仓库...
10. **第三方库集成**:许多开发者会使用像Retrofit、Butter Knife、Glide等库来简化开发。这部分可能介绍了如何添加依赖,以及这些库的基本用法。 通过学习并实践这些源代码,开发者可以更好地掌握Android应用开发...
Android系统本身并不提供直接的汉字转拼音服务,但我们可以借助第三方库,如Pinyin4j或Google的libphonenumber。这里以Pinyin4j为例,它是一个Java库,可以将汉字转换为拼音。首先,需要将Pinyin4j库导入项目,然后...
6. **第三方库**:Android社区开发了许多图像处理库,如Picasso、Glide、Fresco等,它们提供了丰富的图像处理功能,包括滤镜效果。其中,比如GLIDE库,可以方便地集成自定义的图像滤镜。 7. **滤镜效果实现**:常见...
在Android平台上,传感器应用开发是一项重要的技术,它允许开发者创建出与用户环境和设备状态紧密交互的应用。"Android传感器应用实例"是一个专为学习Android传感器开发而设计的项目,通过两个具体的Activity,深入...
总之,这88个经典Android应用程序的源代码提供了丰富的学习素材,涵盖了Android开发的各个方面,包括但不限于组件交互、UI设计、数据存储、网络通信、权限管理和第三方库的使用。通过深入学习和实践,不仅可以提升...
这将列出所有安装在设备上的第三方应用的包名。如果只想查看特定应用,可以添加过滤器: ```bash adb shell pm list packages -f | grep com.example.myapp ``` 了解如何获取Android应用包名对于开发者来说非常...