一、配置项

在AndroidManifest.xml配置文件中,增加以下内容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    //...

    <queries>
        <intent>
            <action android:name="android.intent.action.SEND"/>
            <data android:mimeType="text/plain"/>
        </intent>
    </queries>

    //...
</manifest>

注意上述配置项中的以下内容:

<data android:mimeType="text/plain"/>

其中的mimeType可以视情况调整为其它值:

text/plain

image/png

*/*

等,不逐一列举

二、Java实现

有了前述配置,就可以直接通过代码来获取了:

public List<ResolveInfo> getShareApps(Context context) {
    List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
    Intent intent = new Intent(Intent.ACTION_SEND, null);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.setType("text/plain");
    PackageManager pManager = context.getPackageManager();
    mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
    return mApps;
}

获取到的集合,其中的元素都是类ResolveInfo的示例,可以通过以下方法来获取想要的内容:

resolveInfo.activityInfo.name //launcher class名称
resolveInfo.activityInfo.packageName //package包名
resolveInfo.loadLable(context.getPackageManager()).toString() //应用名
resolveInfo.loadIcon(context.getPackageManager()) //图标

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐