2011-09-26 16 views
5

का उपयोग करके एंड्रॉइड पर स्क्रीनशॉट लेने में असमर्थ मैं हाल ही में एक स्क्रीनशॉट प्राप्त करने की कोशिश कर रहा हूं लेकिन व्यर्थ में हर चीज फ़ोल्डरों को एपीआई स्तर 8 के साथ एंड्रॉइड एमुलेटर में बनाया गया है। मैंने नीचे दिए गए कोड का उल्लेख किया है।रोबोटियम और निजी विधि

इस कोड में विधि लेने के लिए स्क्रीनशॉट() एक निर्देशिका बनाना और एंड्रॉइड जूनिट टेस्टकेस के रूप में निष्पादित करते समय छवि को स्टोर करना है, मुझे परिणाम 100% के रूप में मिलता है लेकिन फ़ोल्डर नहीं बनाए जाते हैं और स्क्रीन शॉट संग्रहित नहीं होता है। क्या मुझे अपने फोन को अपने एसडी कार्ड का उपयोग करने के लिए रूट करना चाहिए?

public class NewRobotiumTest extends ActivityInstrumentationTestCase2 { 
...... 
...... 

    // actual testcase 

    public void testRecorded() throws Exception { 
     solo.waitForActivity("com.botskool.DialogBox.DialogBox", 
       ACTIVITY_WAIT_MILLIS); 
     solo.clickOnButton("Show Alert"); 
     solo.clickOnButton("Ok"); 
     solo.clickOnButton("Show Yes/No"); 
     takeScreenShot(solo.getViews().get(0), "testRecorded_1316975601089"); 
     solo.sleep(2000); 
     solo.clickOnButton("Yes"); 
     solo.clickOnButton("Show List"); 
     solo.clickOnScreen(118f, 563f); 

    } 

    /** 
    * I have added this to the android-manifest.xml file 
    * 
    * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    * 
    */ 

    public void takeScreenShot(final View view, final String name) 
      throws Exception { 

     getActivity().runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       view.setDrawingCacheEnabled(true); 
       view.buildDrawingCache(); 
       Bitmap b = view.getDrawingCache(); 
       FileOutputStream fos = null; 
       try { 
        final String path = Environment.getExternalStorageDirectory()+ "/test-screenshots/"; 
        File dir = new File("/mnt/sdcard/test-screenshots"); 
        if(!dir.mkdirs()){ 
         System.out.println("Creaet sd card failed"); 
        } 

        if (!dir.exists()) { 
         System.out.println(path); 
         dir.mkdirs(); 
        } 

        fos = new FileOutputStream(path + name + ".jpg"); 
        if (fos != null) { 
         b.compress(Bitmap.CompressFormat.JPEG, 90, fos); 
         fos.close(); 
        } 
       } catch (IOException e) { 
       } 
      } 
     }); 

    } 

} 

उत्तर

7

आपको मुख्य एप्लिकेशन में एसडी कार्ड को लिखने के लिए अनुमति जोड़ने की आवश्यकता है। जुनीट टेस्ट प्रोजेक्ट नहीं! इस लिंक बाहर <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

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