এডিবি ব্যবহার করে কোনও ডিভাইসের ক্লিপবোর্ডে লেখা সম্ভব?


26

আমি কীভাবে কোনও মূলযুক্ত অ্যান্ড্রয়েড ডিভাইসের ক্লিপবোর্ডে (এবং সম্ভব হলে এটি থেকে পড়ুন) কীভাবে লিখবেন তা শিখতে আগ্রহী।

আমি ইউএসবি-র মাধ্যমে এডিবি ব্যবহার করে এটি করার আশাবাদী এবং এটি করতে সহায়তা করার জন্য আমি কোনও অ্যাপ্লিকেশন ইনস্টল করতে আগ্রহী নই, কারণ এটি এমন কিছু যা আমি খুব কমই করার পরিকল্পনা করি।

আমাকে সঠিক পথে পরিচালিত কোনও পরামর্শ বা সহায়তা প্রশংসা করবে greatly


: যে কেউ সহজে খুজছে emulators জন্য পন্থা জন্য, এখানে দেখুন stackoverflow.com/questions/3391160/...
Mygod

উত্তর:


21

হ্যাঁ, আপনি আসলে এটি করতে পারেন। আপনি ক্লিপবোর্ড পরিদর্শন করার সময় এটি এক ধরণের ক্লডজি লাগছে তবে এটি ঠিক কাজ করে।

প্রথমে, আপনি বর্তমান ক্লিপবোর্ডের সামগ্রীগুলি service call clipboard 1একটি এডিবি শেল (বা, প্রথমে শেলিং ছাড়াই adb shell service call clipboard 1) দিয়ে পরীক্ষা করতে পারেন। এটি পুনরায় বুট করার পরে প্রাথমিকভাবে ফাঁকা শুরু হতে পারে, উদাহরণস্বরূপ:

# service call clipboard 1
Result: Parcel(
  0x00000000: 00000000 00000001 00000000 00000000 '................'
  0x00000010: 00000000 00000000                   '........        ')
#

আপনি ক্লিপবোর্ডটি ব্যবহার করে পাঠ্য রাখতে পারেন service call clipboard 2, যা মূলত 3 পরামিতি লাগে - দুটি ইন্টি এবং যে স্ট্রিংটি আপনি ক্লিপবোর্ডে রাখতে চান:

# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000    '....')

সত্যি কথা বলতে, আমি নিশ্চিত নই যে প্রথম দুটি পরামিতি কী। স্ট্যাক ওভারফ্লো সম্পর্কে একটি উত্তর প্রথম ইনট্রিকেটটি "পার্সেলের আইটেমের সংখ্যা" (এই ক্ষেত্রে একটি) পরামর্শ দিয়েছে এবং দ্বিতীয়টি স্ট্রিংয়ের দৈর্ঘ্য। তবে, আমি দ্বিতীয় প্যারামিটারের জন্য 0 ব্যবহার করেছি এবং এটি সূক্ষ্মভাবে কাজ করে এবং আমি এই বিশেষ ফাংশনটির সাথে মিলে এমন কোনও ডকুমেন্টেশন খুঁজে পাই না ... সুতরাং এটির জন্য এটি উপযুক্ত take

যাই হোক না কেন, এটি মূলত 3 টি ক্ষেত্র সহ একটি পার্সেল অবজেক্ট তৈরি করছে, তারপরে এটি ক্লিপবোর্ডে প্রেরণ করবে। ক্লিপবোর্ডটি তখন পার্সেলকে আনপ্যাক করে এবং ক্লিপবোর্ডের বিষয়বস্তু হিসাবে স্ট্রিংয়ের মান সেট করে। আপনি পরে মানটি পুনরুদ্ধার করতে গেলে আপনি এটি দেখতে পাবেন:

# service call clipboard 1
Result: Parcel(
  0x00000000: 00000000 00000001 00000000 00000008 '................'
  0x00000010: 00690048 00740020 00650068 00650072 'H.i. .t.h.e.r.e.'
  0x00000020: 00000000 00000000                   '........        ')
#

একইভাবে, আপনি যদি কোনও পাঠ্য প্রবেশের ক্ষেত্রটিতে দীর্ঘক্ষণ টিপেন এবং এটি করার পরে "আটকান" টিপুন, আপনি call service clipboard 2উপরের লাইনের মাধ্যমে সেট করা পাঠ্যটি পাবেন (এবং এটি সম্পূর্ণ স্বাভাবিক দেখাবে)।

(উপরের উদাহরণগুলি আমার এইচটিসি ইভিও থেকে এসেছে, সায়ানোজেনমড 7 চালিয়ে যাচ্ছে)


1
অবশেষে আমি আমার ডাব্লুপিএ কীটি পেস্ট করতে পারি এবং আমার রাউটারের সাথে সংযুক্ত করতে পারি: ডি। ধন্যবাদ.
EarthmeLon

3
@earthmeLon আপনি যদি নিজের ডাব্লুপিএ কীটি অনুলিপি করার সহজ উপায়টি সন্ধান করার চেষ্টা করছেন তবে পরের বারের মতো আপনি নিজের কাছে ইমেল করার মতো সিমিং কাজটি সহজ করতে এবং ইমেল থেকে অনুলিপি / পেস্ট করতে বা এটিতে থাকা একটি টেক্সট ফাইল অনুলিপি করতে পারবেন ইউএসবি-র মাধ্যমে ডিভাইস, তারপরে খুলুন এবং সেখান থেকে অনুলিপি করুন। অন্যান্য বিকল্প রয়েছে যেমন ওয়াইফাই কীবোর্ড যা আপনাকে একটি পিসি থেকে টাইপ (বা পেস্ট) করতে দেয় এবং ফোনে তা হাজির হতে দেয়।
গাথ্রন

4
আমার ডাব্লুপিএ কী সংবেদনশীল। এটি কোনও অ-স্থানীয় নেটওয়ার্ক ইভারের মাধ্যমে সম্প্রচারিত হওয়া উচিত নয়। @ গাথ্রআউন পরামর্শের জন্য ধন্যবাদ। অবশেষে আমি এই কার্যকারিতাটির জন্য আরও ব্যবহার খুঁজে
পাব

6
আমি পেতে '........U.n.k.n.' 'o.w.n. .p.a.c.k.' 'a.g.e. ..... ')যখন উপার্জনcall service clipboard 2
cprcrack

3
অ্যান্ড্রয়েডের কোনও পাঠ্যক্ষেত্রে আপনার পাসওয়ার্ড বা কোনও পাঠ্য অনুলিপি করা দরকার থাকলে আপনি "অ্যাবড শেল ইনপুট পাঠ্য 'স্ট্রিং' "ও করতে পারেন - আমি ক্লিপবোর্ডে ছেড়ে দিয়েছি ...
ফিলিপ

14

আমি এই পদ্ধতিটি ব্যবহার করেছি এবং এটি 4.x এ ভাল কাজ করেছে, তবে ললিপপে আমার জন্য ব্যর্থ হয়েছিল। বিকল্প সমাধানের সন্ধান করার সময় আমি এটি খুঁজে পেয়েছি: /programming/3391160/paste-text-on-android-emulator

এটি আপনি যেমন চেয়েছিলেন ঠিক তেমন নয়, তবে নিজের জন্য, বেশিরভাগ সময় আমি ক্লিপবোর্ডে পাঠ্য অনুলিপি করতে চাই কারণ আমি এটি পাসওয়ার্ড ক্ষেত্রে পেস্ট করতে চাই।

অতিরিক্ত বোনাস হিসাবে, আমার স্ক্রিপ্টটি এখানে রয়েছে ( 2015-04-24 সম্পাদিত পাঠ্যের ফাঁকে ফাঁকে অনুমতি দেওয়ার জন্য ):

#!/bin/bash

if [[ "$1" != "" ]]
then
    TEXT=$1
else
    read -s -p "Enter text you want to insert: " TEXT
fi

ESCAPED_TEXT=`echo $TEXT | sed "s/\s/\%s/g"`
adb shell input text "$ESCAPED_TEXT"

স্ট্রিংটিকে দ্বিগুণভাবে পালানোর দরকার হ'ল দুটি শাঁস রয়েছে: আপনার শেল এবং অ্যাডবি শেল । তবে আমি সন্দেহ করি যে এটি অন্যান্য অক্ষরগুলির ক্ষেত্রেও ব্যর্থ হবে যার শিমের বিশেষ অর্থ রয়েছে, যেমন অ্যাম্পারস্যান্ড
ড্যান ড্যাসকলেসকু

যথাযথভাবে এই পলায়ন করা অ্যাডাব শেলের কাজ হবে, তবে দৃশ্যত এটি সম্পূর্ণরূপে হয় না। আমার সংস্করণে (১.০.৩১) উপরে ব্যবহৃত স্পেস-পলায়নের দরকার নেই, তবে সমস্ত ধরণের বিশেষ চরিত্রের পালানোর প্রয়োজন হবে (তবে এটি নির্ভরযোগ্যভাবে করা অসম্ভব)।
ম্যাথিজস কুইজমান

বিশেষ অক্ষরগুলি হ্যান্ডেল করার একটি ভাল উপায় হ'ল স্টিডিনের মাধ্যমে পাইপ দেওয়া, এরকম কিছু: echo "$TEXT" | adb shell xargs -0 input textWhich 0 (NUL) অক্ষর ব্যতীত যে কোনও পাঠ্য হ্যান্ডেল করা উচিত। দুর্ভাগ্যক্রমে, পুরানো অ্যাডাবির সংস্করণগুলি স্ট্যান্ডিনকে অ্যাডবি কমান্ডলাইনে নির্দিষ্ট কমান্ডে ফরোয়ার্ড করে না। এটি আরও নতুন অ্যাডবি সংস্করণে স্থির করা হয়েছে, তবে এটি কাজ করতে অ্যান্ড্রয়েড এন প্রয়োজন
ম্যাথিজস কুইজমান

স্পেস পলায়নের ক্ষেত্রে, সম্ভবত inputএটি অ্যান্ড্রয়েড ডিভাইসে কমান্ডের জন্য প্রয়োজনীয় , এটি ব্যবহৃত শেলের জন্য নয় adb shell। এছাড়াও, এই উত্তরটি অনুসারে এটি কেবল এসডিকে সংস্করণ 22 এবং নীচে (ললিপপ এবং নীচে, আমি বিশ্বাস করি) এর জন্য প্রয়োজন ।
ম্যাথিজস কুইজমান

4

উপরে স্ক্রিপ্টগুলির উপরে স্ক্রিপ্টগুলির উন্নত সংস্করণ। সেই স্ক্রিপ্টের মতো এটি ক্লিপবোর্ডে লেখেন না, তবে বর্তমানে মনোনিবেশ করা ইনপুট ক্ষেত্রে ইনপুট প্রেরণ করে যা আপনি যা চান তা প্রায়শই হয়।

এই স্ক্রিপ্টটি অ্যান্ড্রয়েড শেলগুলি সাথে বিভ্রান্তি রোধ করতে বিশেষ অক্ষরগুলি থেকে বাঁচতে উন্নত করা হয়েছে। এটি কোনও স্ট্রিং অপরিবর্তিতভাবে প্রেরণের অনুমতি দেওয়া উচিত। readকমান্ডটি একটি (পিছনে) ব্যাকস্ল্যাশ ব্যাখ্যা থেকে রোধ করতে , আমি সেখানে যুক্ত করেছি।

নিম্নলিখিত অক্ষরের বিশেষ তালিকা ব্যবহার করে এটি পরীক্ষা করা হয়েছিল:

./adb-send-string ' \`~!@#$%^&*()-_=+[{]}|;:",<.>/?'\'

লিপিটি এখানে:

#!/bin/bash
# Send text to android device using adb, emulating keyboard input.
# Based on a script from /android//a/105881/223695
# extended to support special characters

if [[ "$1" != "" ]]
then
    TEXT="$1"
else
    read -s -r -p "Enter text you want to insert: " TEXT
fi

escape() {
    # Encapsulate the string in $'', which enables interpretation of
    # \xnn escapes in the string. This is not POSIX-sh, but an extension
    # documented by bash and also supported by the Android sh.
    echo -n "$'"

    # Process each character in $1 one by one
    for (( i=0 ; i<${#1}; i++ )); do
        # Extract the i'th character
        C="${1:$i:1}"
        if [ "$C" = ' ' ]; then
            # Encode spaces as %s, which is needed for Android's
            # "input text" command below 6.0 Marshmellow
            # See /programming//documentation/android/9408/adb-shell/3958/send-text-key-pressed-and-touch-events-to-android-device-via-adb
            echo -n '%s'
        else
            # Encode everything else as \xnn, to prevent them from being
            # interpreted by the Android shell
            printf '\\x%02x' "'$C"
        fi
    done
    # Terminate the $''
    echo -n "'"
}

ESCAPED_TEXT=`escape "$TEXT"`
adb shell input text "$ESCAPED_TEXT"

3

আমি চেষ্টা করেছি এবং কিছুটা গুগল করেছি এবং মনে হচ্ছে কল-পরিষেবা-ক্লিপবোর্ড-পদ্ধতির নতুন অ্যান্ড্রয়েডগুলিতে কাজ করা বন্ধ হয়ে গেছে, এটি আমার জন্য একটি ৪.৪.৪ সংস্করণ অ্যান্ড্রয়েডে ব্যর্থ হয়েছে। অর্থাৎ অ্যাডবি-শেল থেকে ক্লিপবোর্ড অ্যাক্সেস (পড়ুন এবং লিখুন) পেতে আপনার একটি অ্যাপ্লিকেশন প্রয়োজন need আমি গিথুবে মজিদো থেকে ক্লিপার ব্যবহার করি । এপিপি পাশাপাশি হোস্ট করা হয়েছে, তাই এটি নিজেই সংকলন করার দরকার নেই। ইনস্টল হয়ে গেলে আপনি ব্রডকাস্ট কমান্ডগুলি ব্যবহার করে এটিতে যোগাযোগ করতে পারেন (অ্যাপটি আপনাকে সঠিক আদেশগুলি বলবে)। অ্যাপ্লিকেশন রুট প্রয়োজন হয় না।


আপনার উদ্দেশ্য কী তা আমরা জানি না : আপনি কি দয়া করে আপনার পোস্টটি সম্পাদনা করতে এবং সেই অ্যাপ্লিকেশনটি কী করতে পারে তা অন্তর্ভুক্ত করতে পারেন, এবং এটির কীভাবে এটি ব্যবহার করার কথা? লোকেরা ইতিমধ্যে আপনার পোস্টটিকে "উত্তর নয়" হিসাবে পতাকাঙ্কিত করা শুরু করে, কারণ তারা সম্ভবত আপনি যে পয়েন্টটি করতে চান তা মিস করে। আগাম ধন্যবাদ!
ইজি

ক্লিপার আমার জন্য 'অ্যাডবি শেল ইনপুট পাঠ্য' ব্যবহার না করে আরও ভাল কাজ করেছে। পাইথন স্ক্রিপ্ট AdbPaste github.com/gcb/AdbPaste থেকে আরও ভাল ' অ্যাডবি শেল ইনপুট পাঠ্য' মোড়ানোর জন্য। আমি একটি ফাইল প্যারামিটার সমর্থন করার জন্য ক্লিপার বাড়িয়েছি, তাই এখন আমি ক্লিপবোর্ডে মাত্র এক বা দুটি মধ্যে একাধিক পৃষ্ঠা পাঠাতে পারি। এখানে বর্ধিত কোড: github.com/RoundSparrow/clipper
রাউন্ডস্প্যারো হিলিটেক্স

0

adb shell inputঅক্ষর প্রেরণের জন্য ব্যবহার করা অন্য স্ক্রিপ্টটি এখানে পাওয়া যাবে: https://github.com/gcb/AdbPaste

এটি পাইথন স্ক্রিপ্ট যা গিথুব থেকে ক্লোন করা যায়, বা সরাসরি ডাউনলোড করে চালানো যায়:

$ wget https://github.com/gcb/AdbPaste/raw/master/AdbPaste.py
$ chmod a+x AdbPaste.py
$ ./AdbPaste.py "some text to paste"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.