⑴ android 打开sd卡文件夹,并获得选中文件的路径怎么实现
一个图片上传功能需要提供上传图片在SD卡中的路径,总结了网上的一些列子,修改了一下,代码很简单,感兴趣的朋友可以参考下哈,希望对大家有所帮助 最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单。其布局文件如下: 复制代码 代码如下: <?xml version="1/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/select" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择SD卡中的图片" /> </LinearLayout> java文件如下: 复制代码 代码如下: package com.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.widget.Button; public class QueryPictureUrlActivity extends Activity { private Button select; private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); select = (Button)findViewById(R.id.select); select.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data){ if (resultCode != RESULT_OK) { //此处的 RESULT_OK 是系统自定义得一个常量 // Log.e(TAG,"ActivityResult resultCode error"); return; } Bitmap bm = null; ContentResolver resolver = getContentResolver(); if (requestCode == IMAGE_CODE) { try { Uri originalUri = data.getData(); //获得图片的uri bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); //显得到bitmap图片 // 这里开始的第二部分,获取图片的路径: String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(originalUri, proj, null, null, null); //按我个人理解 这个是获得用户选择的图片的索引值 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); //最后根据索引值获取图片路径 String path = cursor.getString(column_index); Log.e("Lostinai",path); }catch (IOException e) { Log.e("Lostinai",e.toString()); } } } } 最后别忘记了加上权限啊 复制代码 代码如下: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
⑵ android 如何使用Intent跳转到文件管理器指定目录。不要再复制
intent
intent
=
new
intent();
intent.setaction("action");//这个地方action换成你要跳转到的文件管理器的action
intent.addcategory("category");//这个地方category换成你要跳转到的文件管理器的category
startactivity(intent);
android跳转到另一个应用都是一样的,只是设置的action与category跟据跳转的应用不同有所不同。
⑶ android开发 怎么实现点击按钮打开文件浏览器并自动定位到指定文件夹
文件浏览器就是常见的文件管理app对吧?哗枝态关键不在定位path,我认为(特别强乱源调,我认为),解决方案,
1,拥有文件管理app源码,修改或者了解是否 支持其他应用的参照启动方式,就是非launcher启动时,是否搭让能处理path或uri参数。
2,在你的app中附加,文件浏览(功能)。
⑷ android的项目里怎么规定文件路径的
方法一:把目标文件放入resources文件中,以通过读取R的资源文件来获取,具体方式如下:
1、在res下新建raw文件,将带读取文件添加到raw文件目录下。
2、添加如下代码:
// 如果要使用文件名获取文件数据:首先获取资源id然后再通过id获取输入流
InputStream im = getResources().openRawResource(R.raw.h_data11);
BufferedReader read = new BufferedReader(new InputStreamReader(im));
String line = "";
StringBuilder sb = new StringBuilder();
try {
while((line = read.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(read != null) {
try {
read.close();
read = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if(im != null) {
try {
im.close();
im = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
Log.v("", "result = " + sb.toString());
方法二:使用assets 只读文件进行读取。
1、将文件到assets下,可以新建文件夹如:“www”然后将文件放入www文件夹中,读取的path为:"www/filename"
String result = "";
ObjectInputStream ois = null;
AssetManager am = context.getResources().getAssets();
try {
ois = new ObjectInputStream(am.open("www/filename"));
result = (String) ois.readObject();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (ois != null) {
ois.close();
ois = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
以对象的方式读取文件中的数据,如果没有新建文件夹,把前面的“www/”去掉就ok啦
以上方式我都还有疑问的地方:
1、raw下新建多级目录是否真的不能够使用。
⑸ android怎么调用系统自带的图库打开指定目录的相册
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//完成照相后回调用此方法
super.onActivityResult(requestCode, resultCode, data);
case 1:
switch (resultCode) {
case Activity.RESULT_OK://照相完成点击确定
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
Log.v("TestFile", "SD card is not avaiable/writeable right now.");
return; }
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
FileOutputStream b = null;
File file = new File("/sdcard/pk4fun/");
file.mkdirs();// 创建文件夹,名称为pk4fun // 照片的命名,目标文件夹下,以当前时间数字串为名称,即可确保每张照片名称不相同。网上流传的其他Demo这里的照片名称都写死了,则会发生无论拍照多少张,后一张总会把前一张照片覆盖。细心的同学还可以设置这个字符串,比如加上“IMG”字样等;然后就会发现sd卡中myimage这个文件夹下,会保存刚刚调用相机拍出来的照片,照片名称不会重复。
String str = null;
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");// 获取当前时间,进一步转化为字符串
date = new Date(resultCode);
str = format.format(date);
String fileName = "/sdcard/myImage/" + str + ".jpg";
sendBroadcast(fileName);
try {
b = new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
} break;
case Activity.RESULT_CANCELED:// 取消
break;
}
break;
case 2:
switch (resultCode) {
case Activity.RESULT_OK: {
Uri uri = data.getData();
Cursor cursor = mActivity.getContentResolver().query(uri, null,
null, null, null);
cursor.moveToFirst();
String imgNo = cursor.getString(0); // 图片编号
String imgPath = cursor.getString(1); // 图片文件路径
String imgSize = cursor.getString(2); // 图片大小
String imgName = cursor.getString(3); // 图片文件名
cursor.close();
// Options options = new BitmapFactory.Options();
// options.inJustDecodeBounds = false;
// options.inSampleSize = 10;
// Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);
}
break;
case Activity.RESULT_CANCELED:// 取消
break;
}
break;
}