2010-07-12 12 views
20

का उपयोग करके लॉन्च किया गया है, मैं एंड्रॉइड में विकास कर रहा हूं, मैं फोन एप्लिकेशन का परीक्षण करने के लिए उपकरण का उपयोग कर रहा हूं। इंस्ट्रुमेंटेशन अनुप्रयोगों का परीक्षण करने के लिए एंड्रॉइड एनवी है।मैं एक परीक्षण फ़ंक्शन में पैरामीटर कैसे वितरित कर सकता हूं, जो adb shell am इंस्ट्रुमेंटेशन कमांड

इसके लिए मैं परीक्षण मामले के नाम से एम कमांड का उपयोग करता हूं। मैं एडीबी चलाता हूं, फिर मैं एडीबी खोल दर्ज करता हूं, फिर एएम कमांड खोलता हूं।

मैं इस कमांड के साथ एक पैरामीटर वितरित करना चाहता हूं। मेरा मतलब है कि मैं am कमांड द्वारा लॉन्च किए गए परीक्षण में पैरामीटर वितरित करना चाहता हूं।

क्या यह संभव है ??? कृपया मदद करें?

उत्तर

43

आप am command पर डेटा यूरी, माइम प्रकार और यहां तक ​​कि "एक्स्ट्रा" पास कर सकते हैं।

बजे [शुरू | साधन]

बजे शुरू [-एक < कार्रवाई >] [-d ]
[आयकर <MIME_TYPE>] [< श्रेणी > [-c -c < श्रेणी >] ...]
[-e <extra_key> <extra_value>
[-e <extra_key> <extra_value> ...]
[-n ​​< घटक >] [डी] [<uri>]

बजे साधन [-e <arg_name> < > arg_value] [-p <prof_file>] [डब्ल्यू] < घटक >

आप उन्हें "अतिरिक्त" के रूप में दे सकते हैं और उसके बाद मिलता है अतिरिक्त जो इसे पारित कर रहे हैं।

आप उन्हें इस तरह से पारित होगा:

am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT 
    -e foo bar -e bert ernie -n my.package.component.blah 

तो अपने कोड में:

Bundle extras = this.getIntent ().getExtras (); 

if (extras != null) { 
    if (extras.containsKey ("foo")) { 
    Log.d ("FOO", extras.getString ("foo")); 
    } else { 
    Log.d ("FOO", "no foo here"); 
    } 

    if (extras.containsKey ("bert")) { 
    Log.d ("BERT", extras.getString ("bert")); 
    } else { 
    Log.d ("BERT", "Bert is all alone"); 
    } 
} else { 
    this.setTitle ("no extras found"); 
} 
+0

हाय रयान मैं कैसे मैं अपने परीक्षण के लिए एक पैरामीटर/एस वितरित कर सकते हैं की अच्छा उदाहरण के बाद लग रही के लिए कुछ समय बिताया - क्षमा करें बस कुछ नहीं मिल सका उपयोगी। क्या आप कृपया एपीके के जावा में कोड का कुछ लिंक या स्निपेट भेज सकते हैं, जो इन पैरामीटर (एक्स्ट्रा) को पुनर्प्राप्त करना चाहिए और मैं कैसे लिख सकता हूं कि adb shell मैं कैसे शुरू करता हूं लक्ष्य पर परीक्षण के लिए अतिरिक्त प्रदान करता है। धन्यवाद एक बहुत इलाना – ilana

+0

सभी उदाहरण है मैं पास पैरामीटर के बारे में बात नहीं कर रहे बजे आदेश द्वारा शुरू परीक्षण करने के लिए ... मैं वास्तव में एक खोज – ilana

+0

मैं एक उदाहरण है कि एक्स्ट्रा कलाकार से सेट प्राप्त करने के लिए काम करना चाहिए के साथ मेरा उत्तर अद्यतन मैं कमांड कमांड –

0

ठीक है:

./adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -e user_id 1 -n com.shortcut.activity/com.shortcut.activity.SelectCardActivity 

com.shortcut.activity/com.shortcut .activity.SelectCardActivity -> अपनी मुख्य कक्षा गतिविधि के लिए यूआईआर शुरू करें ऐप। अपने अनुप्रयोग परम user_id को पारित करेंगे = 1 और वर्ग SelectCardActivity आप इसे के रूप में bellow मिल पर:

Bundle installparams = this.getIntent ().getExtras (); 
0

के बाद से आप पहले से ही Android SDK पर काम कर रहे, यह देखते हुए आप अपने सिस्टम पर एसडीके स्थान पता है - जाएं टर्मिनल पर एसडीके स्थान (कमांड प्रॉम्प्ट) -> adb शेल टाइप -> प्रकार बजे मदद उदाहरण http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html

11

साथ

में परमाटर दर्रा: (जैसे, PEERID SCH-I545 -e)

adb -s 0915f98870e60701 shell am instrument -w -e class /
com.example.android.testing.uiautomator.BasicSample.sendInvite/
-e peerID SCH-I545/
com.example.android.testing.uiautomator.BasicSample.test/android.sup/
port.test.runner.AndroidJUnitRunner 

परीक्षण वर्ग में:

{ 
    Bundle extras = InstrumentationRegistry.getArguments(); 
    String peerID = null; 

    if (extras != null) { 
     if (extras.containsKey ("peerID")) { 
      peerID = extras.getString("peerID"); 
      System.out.println("PeerID: " + peerID); 
     } else { 
      System.out.println("No PeerID in extras"); 
     } 
    } else { 
     System.out.println("No extras"); 
    } 
} 
+0

यही वह है जो मुझे चाहिए क्योंकि मैं इसे गतिविधि में नहीं कर रहा था – wangburger

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