布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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>
代码
import java.io.FileNotFoundExceptionimport 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)
}
}
如果你想要在Android设备上调用系统文件管理器,只选择文件夹而不是文件,可以尝试以下步骤:1. 首先,在你的应用中创建一个Intent对象。
2. 设置Intent的Action为ACTION_OPEN_DOCUMENT_TREE,这样系统会打开一个文件目录选择器。
3. 调用startActivityForResult方法,并传入Intent对象和一个请求码。
4. 在onActivityResult方法中,检查请求码和返回结果是否正确,并从返回的Intent对象中获取所选文件夹的URI。
5. 使用getContentResolver().takePersistableUriPermission方法授予应用访问选定目录的权限,以便你可以在不重新授权的情况下访问该目录。
在使用这种方法时,需要注意的是,一些Android设备可能不支持ACTION_OPEN_DOCUMENT_TREE这个Action,因此你需要在使用之前检查设备的兼容性。另外,获取到的是URI而不是绝对路径,如果需要使用绝对路径,可以使用DocumentFile.fromTreeUri方法将URI转换为文件夹对象,再通过DocumentFile对象获取绝对路径。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)