Android编程 打开本地文件 文件选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android编程 打开本地文件 文件选择器相关的知识,希望对你有一定的参考价值。

android本身没有提供打开文件选择器的接口吗,我想实现单击按钮并选择一个图片文件,显示到imageview中,这样的功能如何实现呢

布局文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_ 
    android:layout_ 
    > 
<TextView   
    android:layout_  
    android:layout_  
    android:text="@string/hello" 
    /> 
   <Button  
        android:id="@+id/b01" 
        android:layout_  
        android:layout_  
    /> 
    <ImageView 
        android:id="@+id/iv01" 
        android:layout_  
        android:layout_  
     /> 
</LinearLayout>

代码

import java.io.FileNotFoundException; 
import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
public class Lesson_01_Pic extends Activity  
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState)  
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
             
        Button button = (Button)findViewById(R.id.b01); 
        button.setText("选择图片"); 
        button.setOnClickListener(new Button.OnClickListener() 
            @Override 
            public void onClick(View v)  
                Intent intent = new Intent(); 
                /* 开启Pictures画面Type设定为image */ 
                intent.setType("image/*"); 
                /* 使用Intent.ACTION_GET_CONTENT这个Action */ 
                intent.setAction(Intent.ACTION_GET_CONTENT);  
                /* 取得相片后返回本画面 */ 
                startActivityForResult(intent, 1); 
             
                 
        ); 
     
         
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data)  
        if (resultCode == RESULT_OK)  
            Uri uri = data.getData(); 
            Log.e("uri", uri.toString()); 
            ContentResolver cr = this.getContentResolver(); 
            try  
                Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); 
                ImageView imageView = (ImageView) findViewById(R.id.iv01); 
                /* 将Bitmap设定到ImageView */ 
                imageView.setImageBitmap(bitmap); 
             catch (FileNotFoundException e)  
                Log.e("Exception", e.getMessage(),e); 
             
         
        super.onActivityResult(requestCode, resultCode, data); 
     

参考技术A //写在/mnt/sdcard/目录下面的文件
   public voidwriteFileSdcard(String fileName,String message) 
       try 
        //FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);
       FileOutputStream fout = newFileOutputStream(fileName);
        byte [] bytes = message.getBytes(); 
        fout.write(bytes); 
         fout.close(); 
         
       catch(Exception e) 
        e.printStackTrace(); 
        
   
  
   //读在/mnt/sdcard/目录下面的文件
   public String readFileSdcard(String fileName)
        String res=""; 
        try 
         FileInputStream fin = new FileInputStream(fileName); 
         int length = fin.available(); 
         byte [] buffer = new byte[length]; 
         fin.read(buffer);     
         res = EncodingUtils.getString(buffer, "UTF-8"); 
         fin.close();     
         
        catch(Exception e) 
         e.printStackTrace(); 
         
        return res; 
   

参考技术B 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android" target="_blank">http://schemas.android.com/apk/res/android</a>"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/b01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/iv01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

import java.io.FileNotFoundException;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class Lesson_01_Pic extends Activity
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button)findViewById(R.id.b01);
button.setText("选择图片");
button.setOnClickListener(new Button.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent();
/* 开启Pictures画面Type设定为image */
intent.setType("image/*");
/* 使用Intent.ACTION_GET_CONTENT这个Action */
intent.setAction(Intent.ACTION_GET_CONTENT);
/* 取得相片后返回本画面 */
startActivityForResult(intent, 1);


);


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (resultCode == RESULT_OK)
Uri uri = data.getData();
Log.e("uri", uri.toString());
ContentResolver cr = this.getContentResolver();
try
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
ImageView imageView = (ImageView) findViewById(R.id.iv01);
/* 将Bitmap设定到ImageView */
imageView.setImageBitmap(bitmap);
catch (FileNotFoundException e)
Log.e("Exception", e.getMessage(),e);


super.onActivityResult(requestCode, resultCode, data);

参考技术C 我有个以前写的现成的工程。浏览文件的。可以给你...

以上是关于Android编程 打开本地文件 文件选择器的主要内容,如果未能解决你的问题,请参考以下文章

android 文件选择器,用户选择保存路径

相机文件选择器未在 WebView android 中打开

Android:从存储访问框架获得的 URI 中使用意图选择器打开文件

有没有办法让颤动的 webview 使用 android 相机进行文件上传?如何在 webview_flutter 中打开文件选择器?

怎么在android手机上打开html文件

Xamarin.Forms 将文件 (pdf) 保存在本地存储中并使用默认查看器打开