हाय मैं एक ऐसे एप्लिकेशन पर काम कर रहा हूं जिसमें मुझे ब्राउज़ बटन का उपयोग करके फ़ाइलों का चयन करने की आवश्यकता है .. मैं एंड्रॉइड में ब्राउज़ बटन कैसे कार्यान्वित कर सकता हूं?बटन ब्राउज़ करना आवश्यक है?
उत्तर
ओह मुझे डाउनवोट मिला ..... ठीक है, मैं अपना जवाब अपडेट कर रहा हूं। मैं नमूना आवेदन के लिए कोड डाल रहा हूं जिसमें मैंने एक बटन इस्तेमाल किया जो आपके फोन की किसी भी निर्देशिका से फाइलें लेगा।
लेआउट
file_picker_empty_view.xml
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No files or directories"
android:background="@android:drawable/toast_frame"
android:textSize="28sp"
android:gravity="center_vertical|center_horizontal"/>
file_picker_list_item.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/file_picker_image"
android:layout_width="40dip"
android:layout_height="40dip"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:layout_marginLeft="5dip"
android:src="@drawable/file"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/file_picker_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left|center_vertical"
android:textSize="28sp"
android:layout_marginLeft="10dip"
android:singleLine="true"
android:text="filename"/>
</LinearLayout>
file_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_width="fill_parent">
<TextView android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textStyle="bold"
android:layout_marginTop="5dip"
android:layout_marginLeft="5dip"></TextView>
<TextView android:text="@+id/TextView02"
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"></TextView>
</LinearLayout>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical">
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/start_file_picker_button"
android:text="Browse" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Selected file"
android:textStyle="bold"
android:textColor="#fff"
android:textSize="24sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/file_path_text_view"
android:text="No file has been selected"
android:textSize="18sp" />
</LinearLayout>
क्रियाएँ
FilePickerActivity हैं
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
*
* @author pankaj
*
*/
public class FilePickerActivity extends ListActivity {
public final static String EXTRA_FILE_PATH = "file_path";
public final static String EXTRA_SHOW_HIDDEN_FILES = "show_hidden_files";
public final static String EXTRA_ACCEPTED_FILE_EXTENSIONS = "accepted_file_extensions";
private final static String DEFAULT_INITIAL_DIRECTORY = "/";
protected File mDirectory;
protected ArrayList<File> mFiles;
protected FilePickerListAdapter mAdapter;
protected boolean mShowHiddenFiles = false;
protected String[] acceptedFileExtensions;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the view to be shown if the list is empty
LayoutInflater inflator = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View emptyView = inflator.inflate(R.layout.file_picker_empty_view, null);
((ViewGroup)getListView().getParent()).addView(emptyView);
getListView().setEmptyView(emptyView);
// Set initial directory
mDirectory = new File(DEFAULT_INITIAL_DIRECTORY);
// Initialize the ArrayList
mFiles = new ArrayList<File>();
// Set the ListAdapter
mAdapter = new FilePickerListAdapter(this, mFiles);
setListAdapter(mAdapter);
// Initialize the extensions array to allow any file extensions
acceptedFileExtensions = new String[] {};
// Get intent extras
if(getIntent().hasExtra(EXTRA_FILE_PATH)) {
mDirectory = new File(getIntent().getStringExtra(EXTRA_FILE_PATH));
}
if(getIntent().hasExtra(EXTRA_SHOW_HIDDEN_FILES)) {
mShowHiddenFiles = getIntent().getBooleanExtra(EXTRA_SHOW_HIDDEN_FILES, false);
}
if(getIntent().hasExtra(EXTRA_ACCEPTED_FILE_EXTENSIONS)) {
ArrayList<String> collection = getIntent().getStringArrayListExtra(EXTRA_ACCEPTED_FILE_EXTENSIONS);
acceptedFileExtensions = (String[]) collection.toArray(new String[collection.size()]);
}
}
@Override
protected void onResume() {
refreshFilesList();
super.onResume();
}
/**
* Updates the list view to the current directory
*/
protected void refreshFilesList() {
// Clear the files ArrayList
mFiles.clear();
// Set the extension file filter
ExtensionFilenameFilter filter = new ExtensionFilenameFilter(acceptedFileExtensions);
// Get the files in the directory
File[] files = mDirectory.listFiles(filter);
if(files != null && files.length > 0) {
for(File f : files) {
if(f.isHidden() && !mShowHiddenFiles) {
// Don't add the file
continue;
}
// Add the file the ArrayAdapter
mFiles.add(f);
}
Collections.sort(mFiles, new FileComparator());
}
mAdapter.notifyDataSetChanged();
}
@Override
public void onBackPressed() {
if(mDirectory.getParentFile() != null) {
// Go to parent directory
mDirectory = mDirectory.getParentFile();
refreshFilesList();
return;
}
super.onBackPressed();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
File newFile = (File)l.getItemAtPosition(position);
if(newFile.isFile()) {
// Set result
Intent extra = new Intent();
extra.putExtra(EXTRA_FILE_PATH, newFile.getAbsolutePath());
setResult(RESULT_OK, extra);
// Finish the activity
finish();
} else {
mDirectory = newFile;
// Update the files list
refreshFilesList();
}
super.onListItemClick(l, v, position, id);
}
private class FilePickerListAdapter extends ArrayAdapter<File> {
private List<File> mObjects;
public FilePickerListAdapter(Context context, List<File> objects) {
super(context, R.layout.file_picker_list_item, android.R.id.text1, objects);
mObjects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = null;
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.file_picker_list_item, parent, false);
} else {
row = convertView;
}
File object = mObjects.get(position);
ImageView imageView = (ImageView)row.findViewById(R.id.file_picker_image);
TextView textView = (TextView)row.findViewById(R.id.file_picker_text);
// Set single line
textView.setSingleLine(true);
textView.setText(object.getName());
if(object.isFile()) {
// Show the file icon
imageView.setImageResource(R.drawable.file);
} else {
// Show the folder icon
imageView.setImageResource(R.drawable.folder);
}
return row;
}
}
private class FileComparator implements Comparator<File> {
public int compare(File f1, File f2) {
if(f1 == f2) {
return 0;
}
if(f1.isDirectory() && f2.isFile()) {
// Show directories above files
return -1;
}
if(f1.isFile() && f2.isDirectory()) {
// Show files below directories
return 1;
}
// Sort the directories alphabetically
return f1.getName().compareToIgnoreCase(f2.getName());
}
}
private class ExtensionFilenameFilter implements FilenameFilter {
private String[] mExtensions;
public ExtensionFilenameFilter(String[] extensions) {
super();
mExtensions = extensions;
}
public boolean accept(File dir, String filename) {
if(new File(dir, filename).isDirectory()) {
// Accept all directory names
return true;
}
if(mExtensions != null && mExtensions.length > 0) {
for(int i = 0; i < mExtensions.length; i++) {
if(filename.endsWith(mExtensions[i])) {
// The filename ends with the extension
return true;
}
}
// The filename did not match any of the extensions
return false;
}
// No extensions has been set. Accept all file extensions.
return true;
}
}
}
MainActivity // यह प्रकट
public class MainActivity extends Activity implements OnClickListener {
private static final int REQUEST_PICK_FILE = 1;
private TextView mFilePathTextView;
private Button mStartActivityButton;
private File selectedFile;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Set the views
mFilePathTextView = (TextView)findViewById(R.id.file_path_text_view);
mStartActivityButton = (Button)findViewById(R.id.start_file_picker_button);
mStartActivityButton.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()) {
case R.id.start_file_picker_button:
// Create a new Intent for the file picker activity
Intent intent = new Intent(this, FilePickerActivity.class);
// Set the initial directory to be the sdcard
//intent.putExtra(FilePickerActivity.EXTRA_FILE_PATH, Environment.getExternalStorageDirectory());
// Show hidden files
//intent.putExtra(FilePickerActivity.EXTRA_SHOW_HIDDEN_FILES, true);
// Only make .png files visible
//ArrayList<String> extensions = new ArrayList<String>();
//extensions.add(".png");
//intent.putExtra(FilePickerActivity.EXTRA_ACCEPTED_FILE_EXTENSIONS, extensions);
// Start the activity
startActivityForResult(intent, REQUEST_PICK_FILE);
break;
case R.id.You_can_handle_more_onclick_events_from_here:
//Do something
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
switch(requestCode) {
case REQUEST_PICK_FILE:
if(data.hasExtra(FilePickerActivity.EXTRA_FILE_PATH)) {
// Get the file path
selectedFile = new File(data.getStringExtra(FilePickerActivity.EXTRA_FILE_PATH));
// Set the file path text view
mFilePathTextView.setText(selectedFile.getPath());
//Now you have your selected file, You can do your additional requirement with file.
}
}
}
}
}
अब में मुख्य रूप में अपने डिफ़ॉल्ट गतिविधि, होना चाहिए मैं छवियों को अपलोड कर रहा हूँ, आप ca n अपनी खुद की छवियों का उपयोग करें।
छवि का नाम: फाइल
छवि का नाम: फ़ोल्डर
और अंत में
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.myContactAdder.adder"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FilePickerActivity"
android:label="@string/app_name">
</activity>
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
ये अधिक जानकारी के लिए लिंक हैं: Android file picker Activity और Creating simple file chooser।
आप क्या करने की जरूरत:
एक बटन जो एक अलग गतिविधि (startActivityForResult) चलाता है बनाएँ।
यह फ़ाइल चुनने की गतिविधि किसी विशेष स्थान से सभी फ़ाइलों और फ़ोल्डरों को सूचीबद्ध करनी चाहिए। यदि आप किसी फ़ोल्डर पर क्लिक करते हैं, तो इस फ़ोल्डर के लिए गतिविधि को पुन: प्रारंभ किया जाता है (इससे फ़ाइलें सूचीबद्ध करें)।
यदि कोई फ़ाइल क्लिक की गई है, तो गतिविधि को परिणाम सेट करना चाहिए, अतिरिक्त में फ़ाइल नाम पास करना होगा, और समाप्त करना होगा।
http://www.kaloer.com/android-file-picker-activity
यह एक अपाचे लाइसेंस दिया गया है:
यहाँ कुछ कोड आप एक फ़ाइल पिकर करने के लिए उपयोग कर सकते हैं।
लिंक नीचे है –
- 1. file_field ब्राउज़ बटन कस्टमाइज़ करें
- 2. बचत बटन क्यों आवश्यक है?
- 3. फ़ायरफ़ॉक्स में इनपुट प्रकार = "फ़ाइल" ब्राउज़ बटन का आकार बदलें?
- 4. बटन ब्राउज़ करने के लिए सीएसएस कैसे लागू करें
- 5. HttpURLConnection: कनेक्ट() को कॉल करना आवश्यक है?
- 6. क्या डेटाबेस को बंद करना आवश्यक है?
- 7. $ _SERVER ['REMOTE_ADDR'] को सत्यापित करना आवश्यक है?
- 8. एचटीएमएल में फ़ाइल ब्राउज़ बटन को बदलने का सबसे अच्छा तरीका क्या है?
- 9. जब दृश्य पर अमान्य() निष्पादित करना आवश्यक है?
- 10. एक आकस्मिक बैक ब्राउज़ करें
- 11. एएसपीनेट आवश्यक फ़ील्ड सत्यापनकर्ता प्रवेश बटन फॉर्म सबमिशन
- 12. FileUpload नियंत्रण (System.Web.UI.WebControls) में ब्राउज़ बटन के टेक्स्ट को कैसे बदलें
- 13. कब निपटान आवश्यक है?
- 14. आउटलुक फ़ोल्डर संवाद ब्राउज़ करें?
- 15. सशर्त "ब्राउज़ करने योग्य" विशेषता
- 16. क्या मुख्य.cpp आवश्यक है?
- 17. क्या InitCommonControlsEx() और InitCommonControls() का उपयोग करना आवश्यक है?
- 18. क्या परमाणु संदर्भ को अस्थिर घोषित करना आवश्यक है?
- 19. एरलांग, क्या यहां फ़ाइल को बंद करना आवश्यक है?
- 20. क्या अभी भी $ (विंडो) .scroll() को थ्रॉटल करना आवश्यक है?
- 21. क्या आईफोन में एनएसआईएनटेगर जारी करना आवश्यक है?
- 22. अब ByVal/ByRef को इंगित करना क्यों आवश्यक नहीं है?
- 23. क्या घटनाओं से सदस्यता समाप्त करना आवश्यक है?
- 24. क्या विभिन्न वर्गों से चालकों को स्थानांतरित करना आवश्यक है?
- 25. jquery unbinding यह आवश्यक है? (तत्वों को प्रतिस्थापित करना)
- 26. क्या .NET SerialPort लिखना/पढ़ना सिंक्रनाइज़ करना आवश्यक है?
- 27. पहचान योग्य: अंततः {} पर शून्य की जांच करना आवश्यक है?
- 28. कैच-ब्लॉक में लेनदेन पर रोलबैक करना आवश्यक है?
- 29. प्रक्रिया के बाद Process.WaitForExit का उपयोग करना आवश्यक है? किल?
- 30. उपयोग के बाद डीबीकॉमैंड का निपटान करना आवश्यक है?
-1 क्योंकि पोस्टिंग लिंक एक अच्छा जवाब नहीं है। कृपया आपके द्वारा पोस्ट किए गए लिंक के बारे में कुछ विवरण प्रदान करें ताकि प्रत्येक व्यक्ति इसका विचार कर सके कि वह उनका अनुसरण करते समय क्या पा सकता है। – WarrenFaith
@WarrenFaith मैंने अपना जवाब अपडेट किया और यदि उत्तर देने का यह अच्छा तरीका है, तो क्या आप अपना डाउन वोट रद्द कर सकते हैं? और कभी-कभी जब आप व्यस्त होते हैं तो आप कुछ कोड पोस्ट नहीं कर सकते हैं, इसलिए आमतौर पर मैं लिंक साझा करता हूं, अगर किसी भी प्रश्न का उत्तर देने का कोई अच्छा तरीका नहीं है, तो मैं इसका ख्याल रखूंगा। –
यह अब एक बहुत अच्छा जवाब है, मैंने इसे अभी उठाया है। यदि आप एक अच्छा जवाब बनाने के लिए व्यस्त हैं, तो आप कुछ लिंक को टिप्पणी के रूप में डालने पर विचार कर सकते हैं या इसे पूरी तरह से छोड़ सकते हैं (मैंने बस नीचे दिए गए लिंक लिंक संपादित किए हैं। 1 और 2 लिंकनाम के लिए एक अच्छा विकल्प नहीं हैं .. ।) – WarrenFaith