Android 裡面有個 folder picker 工具可以用。
一開始先在 app 的 build.gradle 裡面的 dependencies 加入工具:
- compile 'lib.kashif:folderpicker:2.4'
這邊簡單寫一個可以選擇影片檔案播放的程式。
activity_main.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="com.example.chris.myapplication.MainActivity">
- <TextView
- android:id="@+id/id_tv_filename"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginEnd="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginTop="8dp"
- android:text="MainActivity"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
- <Button
- android:id="@+id/id_btn_Attach"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginEnd="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginTop="8dp"
- android:text="File"
- android:onClick="onClickAttachFile"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/id_tv_filename" />
- <Button
- android:id="@+id/id_btn_Play"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginEnd="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginTop="8dp"
- android:onClick="onClick"
- android:text="Play"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/id_vVideo" />
- <VideoView
- android:id="@+id/id_vVideo"
- android:layout_width="wrap_content"
- android:layout_height="300dp"
- android:layout_marginEnd="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginTop="8dp"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/id_btn_Attach" />
- </android.support.constraint.ConstraintLayout>
程式碼的部分
MainActivity.java
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import android.widget.VideoView;
- import lib.folderpicker.FolderPicker;
- public class MainActivity extends AppCompatActivity{
- private int PICKFILE_RESULT_CODE = 1;
- private Button btnPlay;
- private TextView tv_filename;
- private VideoView vVideoView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- btnPlay = (Button)findViewById(R.id.id_btn_Play);
- tv_filename = (TextView)findViewById(R.id.id_tv_filename);
- vVideoView = (VideoView)findViewById(R.id.id_vVideo);
- }
- public void onClick(View v){
- if(vVideoView.isPlaying()){
- vVideoView.pause();
- btnPlay.setText("Play");
- }else {
- vVideoView.start();
- btnPlay.setText("Pause");
- }
- }
- // open attach file folder
- public void onClickAttachFile(View v){
- Intent intent = new Intent(this, FolderPicker.class);
- intent.putExtra("title", "Select file to upload");
- intent.putExtra("pickFiles", true);
- startActivityForResult(intent, PICKFILE_RESULT_CODE);
- }
- // after select the file
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent intent)
- {
- if (requestCode == PICKFILE_RESULT_CODE && resultCode == Activity.RESULT_OK) {
- String readFile = intent.getExtras().getString("data");
- tv_filename.setText(readFile);
- vVideoView.setVideoURI(Uri.parse(readFile));
- }
- }
- }
最後記得在AndroidManifest.xml 加入讀取檔案的權限:
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
用這個方法就可以選擇 attach 的檔案,不管是影片、圖片或是音檔都可以。
END
沒有留言:
張貼留言