2012-08-08 47 views
0

我在Android的浏览其中并上传file.My java类的应用程序在这里:如何在Phonegap中使用android java类?

MainActivity.java

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.     
      } 
     } 
     } 
    } 
} 

FilePickerActivity.java

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; 
     } 
    } 
    } 

在使用这些类Android应用我能够浏览和选择文件,但我想用phonegap来执行这些类。任何人都可以请帮助我如何使用html和js文件在phonegap中使用这些类?

+0

[Android的Java和Phonegap Javascript之间的通信的可能的重复?](http://stackoverflow.com/questions/2727763/communication-between-android-java-and-phonegap-javascript) – DroidDev 2014-12-26 06:29:44

回答

0

Communication between Android Java and Phonegap Javascript?

这应该为你工作,你需要调用Java方法在JavaScript中。

+0

嗨,感谢您的答复,这是一个好的链接可以请你告诉我如何使用我贴上的Android活动来做到这一点,这对我来说真的会有很大的帮助。谢谢你 。 – 2012-08-13 05:30:07

0

我认为你需要按照this创建一个插件类。

你可以在execute里创建你的类的对象,你可以使用你的java函数。

相关问题