আমি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করছি এবং আমি একটি সম্পাদনা পাঠ্য উইজেটের পাঠ্য মানটি অনুলিপি করতে চাই। ব্যবহারকারীর পক্ষে Menu+A
তখন Menu+C
মানটি অনুলিপি করার জন্য টিপানো সম্ভব , তবে আমি কীভাবে এই প্রোগ্রামটি করব?
আমি একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করছি এবং আমি একটি সম্পাদনা পাঠ্য উইজেটের পাঠ্য মানটি অনুলিপি করতে চাই। ব্যবহারকারীর পক্ষে Menu+A
তখন Menu+C
মানটি অনুলিপি করার জন্য টিপানো সম্ভব , তবে আমি কীভাবে এই প্রোগ্রামটি করব?
উত্তর:
ClipboardManager#setPrimaryClip
পদ্ধতি ব্যবহার করুন :
import android.content.ClipboardManager;
// ...
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
import android.content.ClipboardManager;
label
?
Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
সুতরাং এটি কীভাবে করা উচিত তা নিয়ে সকলেই একমত, তবে যেহেতু কেউই সম্পূর্ণ সমাধান দিতে চান না, তাই এখানে যান:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText("text to clip");
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("text label","text to clip");
clipboard.setPrimaryClip(clip);
}
আমি ধরে নিলাম আপনার কাছে ম্যানিফেস্টে ঘোষণা করার মতো কিছু রয়েছে:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
label
মধ্যে newPlainText
পদ্ধতি? দস্তাবেজটি বলে label User-visible label for the clip data.
। কিন্তু কবে label
ব্যবহারকারীর কাছে দৃশ্যমান? এবং আমি কোন ধরণের মান / নাম রাখা উচিত label
?
গুগলিং আপনাকে অ্যান্ড্রয়েড.কন্টেন্ট.স্লিপবোর্ড ম্যানেজারে নিয়ে আসে এবং আপনি সিদ্ধান্ত নিতে পারেন, আমি যেমন করেছিলাম যে ক্লিপবোর্ড এপিআই <11 এ উপলব্ধ নয়, কারণ ডকুমেন্টেশন পৃষ্ঠাটিতে "যেহেতু: এপিআই লেভেল 11" বলা হয়েছে।
প্রকৃতপক্ষে দুটি শ্রেণি রয়েছে, দ্বিতীয়টি প্রথমটি প্রসারিত করে - android.text.ClipboardManager এবং android.content.ClipboardManager।
android.text.ClipboardManager এআইপিআই 1 সাল থেকে বিদ্যমান তবে এটি কেবল পাঠ্য সামগ্রীতেই কাজ করে।
অ্যান্ড্রয়েড.কন্টেন্ট.স্লিপবোর্ড ম্যানেজার ক্লিপবোর্ডের সাথে কাজ করার পছন্দের উপায়, তবে এটি এপিআই লেভেল <11 (হানিকম্ব) এ উপলব্ধ নয়।
এগুলির যে কোনও একটি পেতে আপনার নিম্নলিখিত কোডের প্রয়োজন:
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
তবে API <11 এর জন্য আপনাকে আমদানি করতে হবে android.text.ClipboardManager
এবং API> = 11 এর জন্য 11 android.content.ClipboardManager
public void onClick (View v)
{
switch (v.getId())
{
case R.id.ButtonCopy:
copyToClipBoard();
break;
case R.id.ButtonPaste:
pasteFromClipBoard();
break;
default:
Log.d(TAG, "OnClick: Unknown View Received!");
break;
}
}
// Copy EditCopy text to the ClipBoard
private void copyToClipBoard()
{
ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipMan.setPrimaryClip(editCopy.getText());
}
আপনি এটি চেষ্টা করতে পারেন ..
এডিট টেক্সট থেকে কিছু অনুলিপি এবং পেস্ট ফাংশন প্রয়োগ করার জন্য এখানে কিছু কোড রয়েছে (সংস্করণ চেকের জন্য ওয়ারপজিটকে ধন্যবাদ)। এগুলি আপনি আপনার বোতামের অনক্লিক ইভেন্টে হুক করতে পারেন।
public void copy(View v) {
int startSelection = txtNotes.getSelectionStart();
int endSelection = txtNotes.getSelectionEnd();
if ((txtNotes.getText() != null) && (endSelection > startSelection ))
{
String selectedText = txtNotes.getText().toString().substring(startSelection, endSelection);
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(selectedText);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("WordKeeper",selectedText);
clipboard.setPrimaryClip(clip);
}
}
}
public void paste(View v) {
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), clipboard.getText());
}
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
if (item.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), item.getText());
}
}
}
অ্যান্ড্রয়েড ওরিও হিসাবে, সমর্থন লাইব্রেরিটি কেবল এপিআই 14 এ চলে গেছে Most প্রচুর কোড সাফ করা যায়। (তবে আপনি যদি এখনও নিম্ন সংস্করণকে সমর্থন করছেন তবে আমার সম্পাদনার ইতিহাস দেখুন))
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", selectedText);
if (clipboard == null || clip == null) return;
clipboard.setPrimaryClip(clip);
আমি এই কোডটি বোনাস হিসাবে যুক্ত করছি, কারণ অনুলিপি / পেস্টটি সাধারণত জোড়া হয়ে থাকে।
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence text = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
return;
}
android.content.ClipboardManager
পুরানোের চেয়ে সংস্করণটি আমদানি করতে ভুলবেন না android.text.ClipboardManager
। একই জন্য ClipData
।context.getSystemService()
।null
। আপনি যদি সেভাবে আরও পঠনযোগ্য দেখতে পান তবে আপনি প্রত্যেকে পরীক্ষা করতে পারেন।টেক্সটভিউয়ের জন্য মানক অনুলিপি / পেস্ট সক্ষম করতে, আপনি নিম্নলিখিতগুলির মধ্যে একটি চয়ন করতে পারেন:
বিন্যাস ফাইলে পরিবর্তন করুন: নীচে আপনার পাঠ্য ভিউতে সম্পত্তি যুক্ত করুন
android:textIsSelectable="true"
আপনার জাভা ক্লাসে এই লাইনটি ব্যাকরণগতভাবে দুটি সেট করুন।
myTextView.setTextIsSelectable(true);
এবং টেক্সটভিউতে দীর্ঘক্ষণ চাপুন আপনি অনুলিপি / পেস্টের অ্যাকশন বার দেখতে পারেন।
@ ফ্লাইওয়াত ইতিমধ্যে সঠিক উত্তর দিয়েছেন, আমি কেবল সম্পূর্ণ উত্তরটি ভাগ করছি:
ক্লিপবোর্ডে ম্যানেজ.সেটপ্রাইমারি ক্লিপ ( http://developer.android.com/references/android/content/ClipboardManager.html ) পদ্ধতিটি ব্যবহার করুন :
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
label
ক্লিপ ডেটার জন্য ব্যবহারকারী-দৃশ্যমান লেবেল কোথায় এবং ক্লিপটির
text
আসল পাঠ্য। মতে সরকারী দস্তাবেজ ।
এই আমদানিটি ব্যবহার করা গুরুত্বপূর্ণ:
import android.content.ClipboardManager;
এখানে আমার কাজের কোড
/**
* Method to code text in clip board
*
* @param context context
* @param text text what wan to copy in clipboard
* @param label label what want to copied
*/
public static void copyCodeInClipBoard(Context context, String text, String label) {
if (context != null) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(label, text);
if (clipboard == null || clip == null)
return;
clipboard.setPrimaryClip(clip);
}
}
কোটলিনের জন্য, আমরা নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারি। আপনি এই পদ্ধতিটি কোনও ক্রিয়াকলাপ বা খণ্ডের মধ্যে আটকে দিতে পারেন।
fun copyToClipBoard(context: Context, message: String) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",message)
clipBoard.setPrimaryClip(clipData)
}
context.
হতে পারে কারণ আমি এটা একটি টুকরা মধ্যে করছি - পার্ট আমি অনুপস্থিত ছিল ছিল।