Экспорт данных из TinyDB в CSV App Inventor

Я надеялся, что кто-то может помочь мне или, по крайней мере, дать мне некоторые идеи.

Я разрабатываю приложение App Inventor для инженерной отрасли. Приложение в основном закончено, но App Inventor не поддерживает ввод-вывод на SD-карту.

Теперь мне нужно каким-то образом получить данные из приложения на компьютер без использования какого-либо подключения к Интернету (т.е. только через USB или WIFI) (также не могу использовать Bluetooth)

Я написал короткое Java-приложение в Eclipse, которое может сохранять некоторые данные на SD-карту, но я не знаю, как запустить приложение из App Inventor.

Любые идеи о том, как я могу это сделать, не переписывая все приложение в Eclipse?

Вот код приложения Eclipse, которое необходимо запустить:

    package tlc.savetosd;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

import android.app.Activity;
//import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;

public class Savetosd extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_savetosd);     

        final EditText txtData = (EditText) findViewById(R.id.edtText);
        this.getPackageName();
        TextView txt = (TextView) findViewById(R.id.textView1);


         Button btnSave = (Button) findViewById(R.id.btnSave);
         btnSave.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
        // write on SD card file data in the text box
        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(txtData.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Done writing SD 'mysdfile.txt'",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }// onClick
    });

}


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_savetosd, menu);
        return true;    
    }
}

person Patrick Doyle    schedule 04.12.2012    source источник


Ответы (1)


вы можете запускать другие приложения из App Inventor с помощью Activity Starter. .
См. также дополнительную информацию об использовании Activity Starter здесь.

Запуск произвольных приложений

Вы можете использовать Activity Starter для запуска любого действия, если знаете имя пакета и имя класса или соответствующее намерение. Некоторые разработчики документируют эти намерения в интересах других разработчиков Android. Советы по запуску других приложений с использованием намерений см. в документации по Android API или на форумах разработчиков Android.

Если у вас есть приложение на вашем телефоне и у вас нет исходного кода, вы все равно сможете определить имя пакета и имя класса (а иногда и намерение), запустив приложение и проверив системный журнал Android, как указано над.

ОБНОВЛЕНИЕ: тем временем вы можете найти небольшое руководство «Как сохранить текстовый файл на SD-карту с помощью Activity Starter, вызывающего приложение Java» здесь

person Taifun    schedule 04.12.2012
comment
да, это возможный ответ на часть моего вопроса. к сожалению, приложение, которое необходимо запустить для записи на SD-карту, — это приложение, написанное в eclipse. Я знаю имя пакета приложения, но не могу запустить его из App Inventor. Я отредактирую свой исходный пост, включив в него код приложения Eclipse. - person Patrick Doyle; 04.12.2012
comment
вам нужно только имя пакета и имя класса, чтобы запустить ваше приложение, вы разработчик, поэтому вы должны знать эту информацию... также, не стесняйтесь читать начальный документ активности (см. предоставленные ссылки)... исходный код вашего приложения в этом случае не поможет... - person Taifun; 04.12.2012
comment
Я действительно разобрался!!! я использовал неправильное имя класса. это должно было быть tlc.savetosd.savetosd, а не просто сохранить на SD. теперь просто выяснить, как изменить мое приложение eclipse, чтобы принять некоторую строку из приложения изобретателя приложения, а затем сохранить ее. - person Patrick Doyle; 04.12.2012
comment
отличный! Молодец! кстати: ваш пример также может помочь другим изобретателям приложений сохранить что-то на SD-карте... - person Taifun; 04.12.2012
comment
я опубликую небольшой учебник где-нибудь, как только выясню, как получать данные от изобретателя приложения в это приложение Eclipse. - person Patrick Doyle; 04.12.2012
comment
Вы также можете спросить Гэри на форуме AI4A, я думаю, что он уже работал над чем-то подобным... - person Taifun; 04.12.2012