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
沒有留言:
張貼留言