6

पर क्लिक करें मैं Robotium framework का उपयोग कर ब्लैक-बॉक्स परीक्षण कर रहा हूं। प्रत्येक बार जब मैं एक नया एप्लिकेशन इंस्टॉल करता हूं तो परीक्षण के तहत ऐप स्टेटस बार में एक अधिसूचना भेजता है। मैं उस अधिसूचना पर क्लिक करना चाहता हूं, लेकिन मुझे अभी भी ऐसा करने का उचित तरीका नहीं मिला।प्रोग्रामेटिक रूप से एंड्रॉइड अधिसूचना

मैं मैन्युअल रूप से एक अधिसूचना पर क्लिक करते हैं मैं इस logcat लाइनों मिलती है:

I/ActivityManager( 148): START {flg=0x14000000 cmp=com.test.package/.activity.FrontActivity bnds=[0,38][240,86] (has extras) u=0} from pid -1 
I/ActivityManager( 148): START {flg=0x14000000 cmp=com.test.package/.activity.ResultActivity u=0} from pid 8600 
I/ActivityManager( 148): Displayed com.test.package/.activity.FrontActivity: +1s183ms 
I/ActivityManager( 148): Displayed com.test.package/.activity.ResultActivity: +744ms 

मैं जानता हूँ कि Robotium ही समय में 2 अलग अलग अनुप्रयोगों परीक्षण नहीं कर सकते हैं, साथ ही मैं जानता हूँ कि आप में से अधिसूचना प्राप्त नहीं कर सकता एक बाहरी आवेदन।

मैं भी लंबित आशय हो और इसे आग निम्नलिखित कोड का उपयोग करके करने की कोशिश की:

Context context = this.getInstrumentation().getTargetContext().getApplicationContext(); 
String intentClassString = "com.test.package.activity.FrontActivity"; 
Class<?> intentClass = null; 

try { 
    intentClass = Class.forName(intentClassString); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

Intent intent = new Intent(context, intentClass); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_NO_CREATE); 

try { 
    pendingIntent.send(); 
} catch (CanceledException e) { 
    e.printStackTrace(); 
} 

गतिविधि वास्तव में पता चला है, लेकिन यह मैं क्या मैन्युअल रूप से इसे लागू द्वारा प्राप्त से अलग है। मुझे लगता है कि मेरे द्वारा पारित संदर्भ में कुछ गलत है, या जिस तरह से मैं लंबित इरादा कहता हूं।

इस मुद्दे के बारे में कोई संकेत? अधिसूचना पर क्लिक अनुकरण करने का कोई बेहतर तरीका है?

उत्तर

0

कृपया अच्छा dicussion और यह अन्य stackoverflow सवाल में कुछ ही विकल्प हैं:
Can I test status bar notifications using Android's testing framework?

के बाद से आप पहले से ही बजाय पुन: बनाने के लिए क्या सूचित कोशिश की, कोई लक्ष्य तक आग कोड है() कॉल करना होगा, अधिसूचना पर वास्तव में कॉल() को कॉल करने के परीक्षण के लिए एक विशेष गतिविधि जोड़ने का प्रयास करें।

1

आप अधिसूचना बार पर स्वाइप ट्रिगर कर सकते हैं और अधिसूचना पर ईवेंट टैप कर सकते हैं। तर्क आप इन आदेशों का उपयोग कर सकते हैं बदलकर

adb shell input swipe 100 500 400 100 1000 

adb shell input tap 400 400 

:

आदेशों का संदर्भ लें।

0

उत्तर रंजीत केपी आपको समाधान मिला है। ध्यान रखें कि आपको उस फोन की आवश्यकता है जो ऐप को रूट कर रहा है, क्योंकि ये सूडो निजीकृत के साथ उपयोग किए जाने वाले कमांड हैं।

यह वह कोड है जो मेरे लिए काम कर रहा है। यह पहले अधिसूचना बार (स्वाइप कमांड) बढ़ाता है, 1 सेकंड प्रतीक्षा करता है और अंत में सूची में पहली अधिसूचना को टैप करता है। अपनी इच्छानुसार अक्ष पैरामीटर को संशोधित करें।

Process su = null; 
try { 
su = Runtime.getRuntime().exec("su"); 
su.getOutputStream().write("input swipe 270 010 270 900\n".getBytes()); 
Thread.sleep(1000); 
su.getOutputStream().write("input tap 200 200\n".getBytes()); 
su.getOutputStream().write("exit\n".getBytes()); 
su.waitFor(); 
} catch (Exception e) { 
e.printStackTrace(); 
} finally { 
if (su != null) { 
    su.destroy(); 
} 
} 
संबंधित मुद्दे