android 41 Environment
2015-10-18 17:13
489 查看
assets通常存储音频视频文件,但不要太大。 Environment可以获取sd卡的相关信息, sd卡的根路径:/storage/sdcard
![](http://images2015.cnblogs.com/blog/486468/201510/486468-20151018171123819-541102797.png)
![](http://images2015.cnblogs.com/blog/486468/201510/486468-20151018171200554-1712655213.png)
![](http://images2015.cnblogs.com/blog/486468/201510/486468-20151018171306632-1077061343.png)
![](http://images2015.cnblogs.com/blog/486468/201510/486468-20151018172442882-436359158.png)
activity.java
package com.sxt.day06_07; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.Toast; public class MainActivity extends Activity { private static final String FILE_NAME = "sxt_logo.png"; //将工程assets下的sxt_logo.png图片保存进sd卡 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(Environment.getExternalStorageState().equals(Environment.MEDIA_UNMOUNTED)){//MEDIA_UNMOUNTED没有挂载 //若没有sd卡 Toast.makeText(this, "sd卡没有准备好", 2000).show(); return ; } InputStream in = null; OutputStream out=null; try { in=getAssets().open(FILE_NAME);//getAssets返回AssetManager对象(管理Asset的管理器),获取了工程磁盘assets下的sxt_logo.png图片 File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);//获取sd卡的保存图pain的路径/storage/sdcard/Pictures File file=new File(dir, FILE_NAME); out=new FileOutputStream(file); int len; byte[] buffer=new byte[8*1024];//每次读取8K while((len=in.read(buffer))!=-1){ out.write(buffer, 0, len);//将内存中的buffer写到输出流代表的sd卡 } Toast.makeText(MainActivity.this, "文件保存完毕", 2000).show(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
工程描述文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sxt.day06_07" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 申请读sd卡的权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 申请写sd卡的权限 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.sxt.day06_07.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
相关文章推荐
- 我的Android进阶之旅------>Android知识图谱
- Android 动态设置TextView的drawableLeft等属性
- Android 动态设置TextView的drawableLeft等属性
- android 40 Io编程
- Android Context对象
- Android APK反编译
- Android Listview的分组实现
- 【Android应用开发技术:应用组件】Handler组件通信机制
- Android开发学习日记
- android 布局如何支持多种不同屏幕尺寸
- android 39 共享首选项
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- ANDROID L——RecyclerView,CardView进口和使用(Demo)
- Android基础入门教程——10.2 SmsManager(短信管理器)
- Android Support v4、v7、v13 介绍
- Android--PullToRefreshListView 的简单使用
- Android系统性能优化总结
- android 38 Abdroid客户端和服务端交互
- 关于Android的asynctask-threads-limits问题:asynctask开启的线程是否有极限
- Android通知之自定义通知、响应通知上自定义按钮和更新通知的实现