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

标签 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

最佳答案

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

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

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

上网的时候只要在out目录下找文件就可以了。将它们一一上传和删除。

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

关于android - 如何在互联网可用时存储和发送队列文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21268130/

相关文章:

android - 检测Android设备是否有互联网连接

android - 必要时无法加载 Opencv 库

android - intentService 是否会导致 Activity 并发问题

java - Android 应用程序在定义字节缓冲区来读取文件时崩溃

android - 如何在Android上检查WiFi连接是否有互联网

android - 如何在android drawable中绘制下面提到的圆角形状

android - 你如何在 Android cmake 外部构建系统中链接第三方库?

android - 无法从类型中对非静态方法 getSystemService(String) 进行静态引用

android - 启用 Wi-Fi 后,它应该会打开一个新的 Activity