2011-09-26 42 views
5

Ho cercato di ottenere uno screenshot ultimamente ma ogni cosa invano le cartelle sono create in emulatore Android con api livello 8. ho menzionato il codice qui sotto.Impossibile acquisire screenshot su Android utilizzando robotium e metodo privato

In questo codice metodo takeScreenShot() dovrebbe creare una directory e archiviare l'immagine mentre si esegue come android jcase testcase ottengo il risultato come 100% ma non le cartelle non vengono create e la schermata non viene archiviata. dovrei radicare il mio telefono per usare la sua scheda SD?

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) { 
       } 
      } 
     }); 

    } 

} 

risposta

7

dovete aggiungere il permesso di scrivere sulla scheda SD nel ricorso principale. Non il progetto di test di JUnit! Aggiungere questo per il manifesto del progetto: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Problemi correlati