2017-04-24 42 views
0

我想测试代码,从一个SD卡文件中读取加载测试文件上的SD卡。为此,我想将示例文件加载到我的模拟器的SDCard上。我相信我可以通过将文件推送到模拟设备的文件夹来执行此操作,但是哪一个?我似乎能够把文件到SD卡模拟,看看他们模拟器设置\存储和USB \ SD卡上,但我的代码报告找不到文件。有什么建议吗?我在Mac上使用Android studio v2.3.1。这里是我的代码:如何使用Android设备监控

File dir = Environment.getExternalStorageDirectory(); 
    File file = new File(dir,"dtcontrol.xml"); 

    StringBuilder text = new StringBuilder(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 

     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append('\n'); 
     } 
     br.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
     return; 
    } 

我的清单有,我相信会给我访问SD卡的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
etc.... 
+0

你们是不是它在Android 6.0版(API 23)或上? –

+0

你好,是的,它的Android 6,API23 – MPH

+0

我增加了一个回答你的问题,希望它有助于 –

回答

0

您必须检查它其中的Android 6.0增加运行权限,现在”不是个足够在安装应用程序时请求权限。

这是很容易,试图加载数据库文件之前,你必须检查READ_EXTERNAL_STORAGE许可,如果他们被授予你可以继续。在official docs中,您有关于如何检查和请求运行时权限的更多信息。

其他方法是创建一个带有低于23的API的Android Virtual Device,以便在不必添加运行时权限的情况下测试您的代码,但在发布之前您应该添加它们。

+0

嘿感谢。我添加了一个运行时权限检查到我的应用主要为READ_EXTERNAL_STORAGE权限,我可以看到,我得到“0”(PERMISSION_GRANTED)回来。但是,当我尝试打开文件时,仍然收到File Not Found IOException。从ADM的角度来看,我应该在哪里放置我的测试文件?谢谢 – MPH

+0

所以可能的问题是文件路径。使用'file.getAbsolutePath();'从'file'变量中打印路径,并检查它是否与存储文件的地方匹配。我无法告诉你确切的路径,因为它在特定条件下通常是不同的。 –