I would like to send the files in the smartphone (gpx files) to another user through my app. I don't know how to do this. How about send them using email or sms (Using intents) ?
I implemented a file explorer, so I can handle this in the onFileLongClick event handler in FileChooser class.
This is the FileChooser class codes :
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();
}
}
I need your suggestions !
Update: ListActivity has not "onLongListItemClick" method. :/