সম্পাদনা ( 02 জানুয়ারী 2012 ):
আমি একটি ছোট ওপেন সোর্স অ্যান্ড্রয়েড লাইব্রেরি প্রজেক্ট তৈরি করেছি যা এই প্রক্রিয়াটিকে প্রবাহিত করে, পাশাপাশি বিল্ট-ইন ফাইল এক্সপ্লোরারও সরবরাহ করে (ব্যবহারকারীর উপস্থিতি না থাকলে)। এটি ব্যবহার করা অত্যন্ত সহজ, কোডের কয়েকটি লাইনের প্রয়োজন।
আপনি এটি গিটহাব এ খুঁজে পেতে পারেন: aFileChooser ।
মূল
আপনি যদি চান যে ব্যবহারকারী সিস্টেমে কোনও ফাইল চয়ন করতে সক্ষম হন, আপনার নিজের ফাইল ম্যানেজারটি অন্তর্ভুক্ত করতে হবে, বা ব্যবহারকারীকে একটি ডাউনলোড করার পরামর্শ দিতে হবে। আমি বিশ্বাস করি যে আপনি সবচেয়ে ভাল করতে পারেন তা হ'ল "ওপেনযোগ্য" বিষয়বস্তুর সন্ধান করা Intent.createChooser()
:
private static final int FILE_SELECT_CODE = 0;
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
তারপর আপনি নির্বাচিত ফাইল জন্য শুনবে Uri
মধ্যে onActivityResult()
যেমন:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case FILE_SELECT_CODE:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
Log.d(TAG, "File Uri: " + uri.toString());
// Get the path
String path = FileUtils.getPath(this, uri);
Log.d(TAG, "File Path: " + path);
// Get the file instance
// File file = new File(path);
// Initiate the upload
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
getPath()
আমার পদ্ধতি FileUtils.java
হয়:
public static String getPath(Context context, Uri uri) throws URISyntaxException {
if ("content".equalsIgnoreCase(uri.getScheme())) {
String[] projection = { "_data" };
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow("_data");
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
} catch (Exception e) {
// Eat it
}
}
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}