3

Android から始めます。インターネットが利用可能なときにプログラムでファイルを送信したい(電子メールで)。プログラムする最善の方法は、インターネットがない場合にファイルをキューに送信することだと思います。インターネットが検出されると、ファイルが 1 つずつアップロードされ始めます。コードは次のようになるはずです。

バックグラウンド サービスは、インターネットがあるかどうかを継続的にチェックします。

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

ファイルをキューに入れる方法が見つかりませんでした (通常の手順ではない可能性があります)。ここから 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
4

1 に答える 1

-1

これにより、ファイルが保存されます(「内部ストレージ」に、外部ストレージを使用することもできます(デバイスにある場合)):

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

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

オンラインになったら、out ディレクトリでファイルを探します。それらを1つずつアップロードして削除します。

編集:または、ファイルが既にストレージにあり、それらをコピーまたは削除したくない場合は、SQLite テーブルを使用して、サービスがアップロードする必要があるすべてのファイルの行を保存し、テーブルから行を削除します。

于 2014-01-21T20:28:17.450 に答える