如何在互联网可用时存储和发送队列文件

时间:2014-01-21 20:13:18

标签: android android-internet

我们从Android开始。我们希望以可编程方式在互联网可用时发送文件(通过电子邮件)。我们猜测编程的最佳方法是在没有互联网的情况下将文件发送到队列。检测到互联网时,文件将逐一开始上传。我们猜测代码应如下所示:

后台服务会不断检查是否有互联网:

public class EducarCabezoService extends Service{
    @Override
    public void onCreate() {
        super.onCreate();                 
        IntentFilter filter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);        
        ciReceiver = new checkInternetReceiver();
        registerReceiver(ciReceiver, filter);         

后台服务为此目的使用BroadcastReceiver:

public class checkInternetReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {     
        Intent uqofIntent = new Intent(context, UploadQueueOfFilesService.class);
        context.startService(uqofIntent);

我们没有找到如何将文件放入队列(也许这不是正常的程序)。我们可以使用here中的方法isOnline():

public class MainActivity extends Activity {
    public uploadFile (){
        if (!isOnline()){
            // TODO Send files to queue?

我们既不知道如何从该队列上传这些文件

public class UploadQueueOfFilesService extends Service{
    @Override
    public void onCreate() {
        // TODO Start uploading files

1 个答案:

答案 0 :(得分:-1)

这将保存一个文件(到“内部存储”,你也可以使用外部存储(如果他们的设备有它)):

String FILENAME = "out/file1";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

当您上线时,只需在out目录中查找文件即可。逐个上传和删除它们。

编辑:或者,如果文件已存储,并且您不想复制或删除它们,请使用SQLite表为您的服务应上传的每个文件存储一行,然后从表中删除该行。