2016-06-01 8 views
3

私は次の方法を使用して、ユーザーが選択した任意のアプリで画像を共有しています。Android共有するために使用されるアプリの名前を取得する方法

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)); 

これはうまくいきましたが、今は共有するためにユーザーが選んだアプリの名前を取得しようとしています。これを行う標準的な方法がありますか?

ご注意いただきありがとうございます。 Jose

+1

あなた自身のチューザーダイアログを作成することはできますが、ユーザーが実際に共有プロセスを完了したかどうかを通知する方法はないと思います –

答えて

5

Androidチューザを使用する前は、Android 6.0より前のバージョンではサポートされていません。 Android 6.0以降では、EXTRA_CHOOSER_REFINEMENT_INTENT_SENDERを使用してIntentSenderを提供し、ユーザーが選択したときに通知され、その選択肢は何かを通知します。

PackageManagerqueryIntentActivities()を使用して、shareIntentをサポートするアクティビティを確認し、ユーザーが選択できる独自のUIを作成できます。それはあなた自身のUIなので、ユーザーが選んだものを見つけることができます。

2

あなたはこのコードを試すことができます。

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

getNameFromApp(packageManager); 

そして

public String getNameFromApp(PackageManager packageManager) { 

    List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(shareIntent, 0); 

    int lastDot = 0; 

    String name = ""; 

    for (int i = 0; i < resolveInfos.size(); i++) { 

     // Extract the label, append it, and repackage it in a LabeledIntent 
     ResolveInfo resolveInfo = resolveInfos.get(i); 
      String packageName = resolveInfo.activityInfo.packageName; 

     lastDot= packageName.lastIndexOf("."); 

     name = packageName.substring(lastDot + 1); 
    } 

    return name; 
} 

このコードは、最後のアプリの名前を取得します。しかし、あなたはそれをすることができますが、あなたがしたいです。早くやれよ!。

関連する問題