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:

--
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 :
⦁ Activity 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.
--
The trick is that there is actually no built-in package for the clipboard (some apps provide the Copy to Clipboard option system-wide by creating such a package with the appropriate intent-filter).
However, since you're creating the chooser's options manually, you can add your own intent to handle the copy to clipboard operation. For example, like this:
Where
... create the intentList, as before ...
// Add a custom intent to handle the "copy to clipboard" option.
Intent copyToClipboard = new Intent(this, ShareToClipboardActivity.class);
copyToClipboard.putExtra(Intent.EXTRA_TEXT, "text to copy to clipboard");
// Wrap it with a LabeledIntent and add it to the list of choosable ones.
LabeledIntent labeledCopyToClipboard = new LabeledIntent(copyToClipboard, getPackageName(), "Copy!", 0);
intentList.add(labeledCopyToClipboard);
... convert intentList to array and show chooser, as before ...
Where
ShareToClipboardActivity is your own activity, which does (at least) this:public class ShareToClipboardActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
CharSequence text = getIntent().getCharSequenceExtra(Intent.EXTRA_TEXT);
ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipboardManager.setPrimaryClip(ClipData.newPlainText(null, text));
finish();
}
}
Note that this is a bare-bones example: you would probably want drawable and string resources for the
LabeledIntent, as well as possibly showing a Toast message in ShareToClipboardActivity, use the old ClipboardManager if targeting pre-API 11, &c.
--
댓글 없음:
댓글 쓰기