How add "copy to clipboard" to custom IntentChooser?
android, clipboard, share
Solution
Update: My solution is dependent on another application package and I realized it might not be the correct approach. Hence would suggest to define your own `Activity` which will handle copy and paste functionality using `ClipboardManager`, as suggested in another answer here.
Original Answer
`Clipboard` activity details:
- Package name : `com.google.android.apps.docs`
- Activity name : `com.google.android.apps.docs.app.SendTextToClipboardActivity`
Following `Intent` code will start and execute the `clipboard` activity.
Intent i = new Intent();
i.setComponent(new ComponentName("com.google.android.apps.docs", "com.google.android.apps.docs.app.SendTextToClipboardActivity"));
i.setAction(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, "text to copy to clipboard");
startActivity(i);
You can add appropriate `if` clause while adding this `intent` to the `intentList`.
Problem
According to this solution, I would like to add "copy to clipboard" action in custom share dialog - the same as in the default action share provider. What I have tried was adding to if clausule statement, word `packageName.contains("clipboard")` but without success. ``` String packageName = ri.activityInfo.packageName; if(packageName.contains("android.email")) { emailIntent.setPackage(packageName); } else if(packageName.contains("twitter") || packageName.contains("facebook") || packageName.contains("mms") || packageName.contains("android.gm")) { Intent intent = new Intent(); intent.setComponent(new ComponentName(packageName, ri.activityInfo.name)); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); if(packageName.contains("twitter")) { intent.putExtra(Intent.EXTRA_TEXT, resources.getString(R.string.share_twitter)); } else if(packageName.contains("facebook")) { intent.putExtra(Intent.EXTRA_TEXT, resources.getString(R.string.share_facebook)); } else if(packageName.contains("mms")) { intent.putExtra(Intent.EXTRA_TEXT, resources.getString(R.string.share_sms)); } else if(packageName.contains("android.gm")) { intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(resources.getString(R.string.share_email_gmail))); intent.putExtra(Intent.EXTRA_SUBJECT, resources.getString(R.string.share_email_subject)); intent.setType("message/rfc822"); } intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon)); } ``` The whole code is used from https://stackoverflow.com/a/18068122/619673 . `adb shell pm list packages` returned me list of packagenames but without this phrase. Can I somehow get packagename of clipboard to add it to my custom list of shared providers? Here is an example with that "copy to clipboard" option: