1

我希望有人可以帮助我,或者至少给我一些想法。

我正在为工程行业开发 App Inventor 应用程序。该应用程序基本完成,但App Inventor 不支持I/O 到sd 卡。

现在我需要能够在不使用任何互联网连接的情况下以某种方式从应用程序获取数据到电脑(即仅通过 USB 或 WIFI)(也不能使用蓝牙)

我在 Eclipse 中编写了一个简短的 Java 应用程序,可以将一些数据保存到 sdcard,但我不知道如何从 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;    
    }
}
4

1 回答 1

1

您可以使用Activity Starter从 App Inventor 中启动其他应用程序。还可以在此处查看有关使用活动启动器的
更多信息。

启动任意应用程序

如果您知道包名类名或适当的意图,则可以使用 Activity Starter 启动任何活动。一些开发人员记录这些意图是为了其他 Android 开发人员的利益。有关使用 Intent 启动其他应用程序的提示,请参阅 Android API 文档或搜索 Android 开发者论坛。

如果您的手机上有一个应用程序并且您没有源代码,您仍然可以通过启动应用程序并检查 Android 系统日志来确定包名和类名(有时是意图),如所示以上。

更新:您同时可以在这里找到一个小教程“如何使用 Activity Starter 调用 Java 应用程序将文本文件保存到 SD 卡”

于 2012-12-04T14:08:37.620 回答