2014-01-25 88 views
0

我想通过我的应用程序将智能手机中的文件(gpx文件)发送给其他用户。 我不知道该怎么做。 如何使用电子邮件或短信发送(使用意图)?发送文件给其他用户

我实现了一个文件浏览器,这样我就可以在文件选择处理这个在onFileLongClick事件处理程序。

这是文件选择类代码:

public class FileChooser extends ListActivity { 

private File currentDir; 
private FileArrayAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    currentDir = Environment.getExternalStorageDirectory(); 
    fill(currentDir); 
} 
private void fill(File f) 
{ 
    File[]dirs = f.listFiles(); 
    this.setTitle("Current Dir: "+f.getName()); 
    List<Item>dir = new ArrayList<Item>(); 
    List<Item>fls = new ArrayList<Item>(); 

    try { 

     for(File ff: dirs) { 

      Date lastModDate = new Date(ff.lastModified()); 
      DateFormat formater = DateFormat.getDateTimeInstance(); 
      String date_modify = formater.format(lastModDate); 
      if(ff.isDirectory()) { 

       File[] fbuf = ff.listFiles(); 
       int buf = 0; 
       if(fbuf != null){ 
        buf = fbuf.length; 
       } 
       else buf = 0; 
       String num_item = String.valueOf(buf); 
       if(buf == 0) num_item = num_item + " item"; 
       else num_item = num_item + " items"; 

       dir.add(new Item(ff.getName(),num_item,date_modify,ff.getAbsolutePath(),"directory_icon")); 
      } 
      else { 
       fls.add(new Item(ff.getName(),ff.length() + " Byte", date_modify, ff.getAbsolutePath(),"file_icon")); 
      } 
     } 
    }catch(Exception e) { 
     e.printStackTrace(); 
    } 
    Collections.sort(dir); 
    Collections.sort(fls); 
    dir.addAll(fls); 
    if(!f.getName().equalsIgnoreCase("sdcard")) { 
     dir.add(0,new Item("..","Parent Directory","",f.getParent(),"directory_up")); 
    } 
    adapter = new FileArrayAdapter(FileChooser.this,R.layout.row_custom_item, dir); 
    this.setListAdapter(adapter); 
} 
@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Item o = adapter.getItem(position); 

    try { 
     if(o.getImage().equalsIgnoreCase("directory_icon")||o.getImage().equalsIgnoreCase("directory_up")){ 
      currentDir = new File(o.getPath()); 
      fill(currentDir); 
     } 
     else { 
      onFileClick(o); 
     } 
    }catch(NullPointerException e) { 
     Toast.makeText(this, "There's no a parent directory!" , Toast.LENGTH_SHORT).show(); 
    } 
} 

private void onFileLongClick(Item o) { 

    HERE 
} 

private void onFileClick(Item o) 
{ 
    String name = o.getName(); 
    int index = name.lastIndexOf("."); 

    if(index != -1) { 

     String estensione = name.substring(index); 

     if(estensione.compareToIgnoreCase(".GPX") == 0) { 
      Intent intent = new Intent(); 
      intent.putExtra("GetPath",currentDir.toString()); 
      intent.putExtra("GetFileName",o.getName()); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 
     else { 
      Toast.makeText(this, "Puoi importare solo file con estensione .GPX" , Toast.LENGTH_SHORT).show(); 
     } 
    } 
    else { 
     Toast.makeText(this, "Puoi importare solo file con estensione .GPX" , Toast.LENGTH_SHORT).show(); 
    } 
} 

我需要你的建议!

更新: ListActivity没有“onLongListItemClick”方法。 :/

回答

0

您可以通过启动电子邮件意向来发送文件。检查以下线程细节

Trying to attach a file from SD Card to email

+0

好吧,我读过它。但是,一个gpx文件的正确类型是什么? – Loris

+0

试试这个代码 检查这个答案 http://stackoverflow.com/questions/11068648/launching-an-intent-for-file-and-mime-type 档案文件=新的文件(文件路径); MimeTypeMap map = MimeTypeMap.getSingleton(); String ext = MimeTypeMap.getFileExtensionFromUrl(file.getName()); String type = map.getMimeTypeFromExtension(ext);如果(type == null) type =“*/*”; Intent intent = new Intent(Intent.ACTION_VIEW); Uri data = Uri.fromFile(file); intent.setDataAndType(data,type); startActivity(intent); –

0

如果你想你的文件发送到谁远从你的用户,你可以将文件附加到电子邮件,轻松,快速地把它! 通过以下链接了解如何在Android中发送电子邮件,并附上: How can I send emails from my Android application? http://www.javacodegeeks.com/2013/10/send-email-with-attachment-in-android.html

但是,如果你的用户在你的附近,你可以使用蓝牙发送文件。

+0

你有蓝牙链接吗? – Loris

+0

这里U R! :http://www.javacodegeeks.com/2013/09/bluetooth-data-transfer-with-android.html http://stackoverflow.com/questions/12562875/android-bluetooth-example http:// www .javatpoint.com/android-bluetooth-tutorial 我为您提供下载本书=> * Android应用程序开发指南* 这是一个很好的Android编程参考 –

0

好吧,我做到了;)

我写了这个:

File fileToSend = new File(currentDir.getPath() + "/" + o.getName()); 
Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.setType("text/plain"); 
sendIntent.putExtra(Intent.EXTRA_SUBJECT, o.getName()); 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fileToSend)); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "Enjoy the gpx file"); 
startActivity(Intent.createChooser(sendIntent, "Invia il file gpx")); 

但我怎么只能打开Gmail吗?

相关问题