Android如何获取用于分享的应用程序名称

时间:2016-06-01 19:00:27

标签: java android android-intent share

我使用以下方法与用户选择的任何应用分享图片。

    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    File imageFileToShare = new File(imagePath);
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFileToShare));

    if (!TextUtils.isEmpty(text)) {
        shareIntent.putExtra(Intent.EXTRA_TEXT, text);
    }
    context.startActivity(Intent.createChooser(shareIntent, "Share with").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

这很好用,但现在我试图获取用户选择的应用名称进行分享。有(标准)方法吗?

感谢您的关注。 何

2 个答案:

答案 0 :(得分:6)

使用Android选择器时,Android 6.0之前不支持此功能。在Android 6.0及更高版本中,您可以使用EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER提供IntentSender,当用户做出选择以及选择时,会通知PackageManager

欢迎您使用queryIntentActivities()shareIntent找出支持您{{1}}的活动,并创建自己的用户界面供用户选择。然后,由于它是您自己的UI,您将找到用户选择的内容。

答案 1 :(得分:2)

您可以尝试使用以下代码:

$.extend( jQuery.fn.dataTableExt.oSort, {
    "date-time-odd-pre": function (a){
        if(/\d{1,2}\/\d{1,2}\/\d{4}/.test(a)){
            return parseInt(moment(a, "DD/MM/YYYY").format("X"), 10);
        }else{
            return parseInt(moment(a, "MM/YYYY").format("X"), 10);
        }
    },
    "date-time-odd-asc": function (a, b) {
        return a - b;
    },
    "date-time-odd-desc": function (a, b) {
        return b - a;
    }
});

PackageManager packageManager = getPackageManager();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");

getNameFromApp(packageManager);

此代码获取最后一个应用的名称。但你可以随心所欲地做到这一点。做吧!。