2010-10-28 17 views
32

मैं केवल कमांड लाइन का उपयोग करके एक खोल से एक वास्तविक एसएमएस संदेश भेजने में सक्षम होना चाहता हूं और ऐसा करने के लिए किसी भी एपीके पर निर्भर नहीं हूं। मुझे इस संदेश को फोन के बीच भेजने में दिलचस्पी है, न कि एमुलेटर से फोन तक। उदाहरण के लिए, आदेश चलाकर:मैं एक खोल से एक एसएमएस कैसे भेजूं?

service call phone 2 s16 "1234567890" 

मैं कमांड लाइन का उपयोग कर फोन से फोन पर कॉल कर सकता हूं। 'सेवा सूची' कमांड एक आईएमएस सेवा दिखाता है, जिसे मैं सही तर्क प्रदान नहीं कर सकता। मुझे लगता है कि एक तर्क एक पीडीयू स्ट्रिंग होना चाहिए लेकिन अब तक कोई भाग्य नहीं है।

उत्तर

2

आप कमांड लाइन से इच्छित किसी भी इरादे को भेज सकते हैं, इसलिए यह केवल यह पता लगाने की बात है कि एसएमएस भेजने के लिए किस उद्देश्य का उपयोग किया जा सकता है, या यदि कोई अस्तित्व में नहीं है, तो एक एपीके लिखना जो इस तरह के इरादे को प्रदान करता है -तो-sms क्षमता और कमांड लाइन से ट्रिगर करने के इरादे को भेजना।

यदि आप ऐसा करने के लिए एक एपीके लिखना समाप्त करते हैं, तो अनुमतियों के बारे में कुछ सोचें। कौन सा उपयोगकर्ता कमांड लाइन के रूप में चल रहा है - adb shell user? कोई पुराना सामान्य ऐप उपयोगकर्ता? आपके एपीके के पास संभवतः एसएमएस अनुमतियां होंगी, लेकिन क्या आप इस बात को सीमित करना चाहते हैं कि फोन पर सबकुछ के लिए, या अपने इरादे में कुछ सुरक्षा तंत्र को लागू करें?

+1

धन्यवाद क्रिस, मुझे लगता है कि मैं विचार की उस पंक्ति के साथ सही रास्ते पर हूं। अब तक मैं कमांड के साथ बहुत करीब पहुंचने में कामयाब रहा हूं "मैं शुरू करता हूं- android.intent.action.SENDTO -d एसएमएस: 1234567890 - sms_body ohai --ez exit_on_sent true" लेकिन मुझे अभी भी यह पता लगाने की आवश्यकता है कि कैसे दृश्य के ऑनक्लिक/ऑन एडिटरएक्शन को स्वचालित रूप से ट्रिगर करें। एमएमएस स्रोत कोड के माध्यम से देखकर मुझे mSendButton दृश्य मिला जो मुझे लगता है कि मुझे एक PerformClick() चालू करने की आवश्यकता है। अगर मुझे कामकाजी कमांड या कमांड की जोड़ी मिलती है तो मैं इसे और अपडेट कर दूंगा। – reproba

+0

यह हो सकता है कि उस मार्ग पर जाने के लिए उपयोगकर्ता इंटरैक्शन की आवश्यकता हो - यदि ऐसा कोई ऐसा प्रतीत नहीं होता है जहां एसएमएस अनुमति की आवश्यकता है, प्लेटफ़ॉर्म डिज़ाइन दर्शन को अनुमति के स्थान पर उपयोगकर्ता की स्वीकृति की आवश्यकता होगी। तो आप विचार के दूसरे आधे भाग लेना चाहते हैं और एसएमएस की अनुमति के साथ अपने स्वयं के इरादे से संचालित एसएमएस प्रेषक एपीके, गैर-इंटरैक्टिव को कार्यान्वित करना चाहते हैं। और उम्मीद है कि किसी तरह की सुरक्षा तंत्र के साथ यह केवल आपके इच्छित उद्देश्य के लिए काम करता है। –

11

आप "टेलनेट लोकलहोस्ट 5554" के समान कुछ करने वाले एमुलेटर को टेलनेट कर सकते हैं, जहां 5554 पोर्ट एमुलेटर सुन रहा है। उसके बाद, आप निम्न कार्य करके एक एसएमएस संदेश भेज सकते हैं:

sms send 1234 "Hello" 

1234 अंक की कोई स्ट्रिंग हो सकती है। यदि आप रिक्त स्थान शामिल हैं तो उद्धरण में संदेश संलग्न करें।

संपादित करें: एक एसएमएस आदेश वास्तविक उपकरणों पर एंड्रॉयड में मौजूद नहीं है, यह नकली एक एसएमएस प्राप्त नहीं भेज करने के लिए एक एमुलेटर-केवल सुविधा है। यह केवल नकली उपकरणों के लिए एक सुविधा है जिनके पास किसी भी वास्तविक सेलुलर नेटवर्क तक पहुंच नहीं है।

सीएफ। http://developer.android.com/guide/developing/devices/emulator.html#sms

38

वास्तव में, यह किया जा सकता है, लेकिन एशियाई विकास बैंक की आवश्यकता है स्थापित होने के लिए (एंड्रॉयड एसडीके का एक हिस्सा)

adb shell am start -a android.intent.action.SENDTO -d sms:CCXXXXXXXXXX --es sms_body "SMS BODY GOES HERE" --ez exit_on_sent true 
adb shell input keyevent 22 
adb shell input keyevent 66 

कहाँ CCXXXXXXXXXX देश-कोड फोन नंबर आता है। यह गैर-मानक एंड्रॉइड इंस्टॉलेशन पर सही ढंग से काम नहीं कर सकता है, आपको पास करने के लिए सही कीवेन्ट मानों को ढूंढना होगा।

+0

क्या आप जानते हैं कि मैं एसएमएस बॉडी के लिए डबल कोट्स से कैसे बच सकता हूं? –

+1

@EdgarVillegasAlvarado, आसानी से: '"उसने कहा \" ठीक \ "" ' – kolypto

+0

मैंने चारों ओर देखा है और यह काम करता प्रतीत होता है ... धन्यवाद – thevoipman

8

इस बारे में कैसे?

service call isms 5 s16 "+??????????" i32 0 i32 0 s16 "SMS TEXT HERE" 
6

मैं काफी प्रतिष्ठा नहीं है दिमित्री द्वारा दिए गए जवाब वोट दें ऊपर बताते हैं, लेकिन यह है कि जवाब यह है कि एक मामूली संशोधन के साथ काम करता है: कम से कम एक अमेरिकी नंबर के लिए, बजाय एक plus- डालने की साइन (+) यह मेरे लिए "1" उदाहरण के साथ काम करता है 17079876543 ...

service call isms 5 s16 "17079876543" i32 0 i32 0 s16 "SMS TEXT HERE"

ओह लड़का ओह लड़के ओह लड़के ... अब अगर मैं पता लगा सकते हैं कि कैसे कमांड लाइन से अधिक एसएमएस प्राप्त और गठबंधन Emacs के साथ (एक Emacs में शेल का कहना है कि करने के लिए - वह शुरू होता है अपने हाथों को एक साथ रगड़ने और एक slanted grin दरार ... और अन्य सभी कमांड लाइन लीवर के बारे में सोचो हम खींच सकते हैं!)

+0

पूरी तरह से ठीक काम कर रहा है। लेकिन मैं रिक्त स्थान कैसे जोड़ सकता हूं? रिक्त स्थान इस के साथ काम नहीं करेंगे। उदाहरण के तौर पर यदि मैं "एसएमएस टेक्स्ट यहां" भेजता हूं तो यह केवल एसएमएस भाग भेजता है –

संबंधित मुद्दे