0

我正在按照这里的教程以及这里的某人的帮助请求...

我对 Java/Android 编程非常陌生,我不确定如何“启动”这部分代码。在我的 AndroidManifest.xml 中,我将它设置为第一个活动,假设它会在我启动它时启动:

    <activity
        android:name=".UploadImage"
        android:label="@string/title_activity_starting_point" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

不幸的是,它不能以这种方式工作,因为每当我启动应用程序时,它都会自动“意外停止”。我放在这里的任何其他 Java 类都可以正常启动,所以我认为它是代码中的内容。我只是不确定我需要在哪里让代码“运行”,因为每次我编译它时,程序都会在我的手机上崩溃。

LogCat 说它无法解析这行代码:

String image_str = Base64.encodeBase64String(byte_arr);
// old code was String image_str = Base64.encodeBytes(byte_arr), 
// but this didn't compile for me and a comment on another website 
// said that encodeBase64String could replace it...apparently not?
4

2 回答 2

1

欢迎来到安卓。

首先,在 Eclipse 中找到您的 logCat。它会是你最好的朋友(也是很多挫折的来源)。

其次,一旦你找到你的 logCat,你很可能会看到一个NetworkOnMainThread异常。这意味着您正试图在主 UI 线程上执行网络请求,这将导致屏幕“冻结”和卡顿。这是一个禁忌,从 Android 4.0 开始,它会使您的应用程序崩溃。

有一种方法可以明确地覆盖它,但如果你学会一开始就避免这种情况会更好——一点也不难。只需使用AsyncTask

最后,确保您在 Manifest 中有 INTERNET 权限。

于 2012-12-07T08:01:07.727 回答
0

显然我输入的 Base64 文件是从原始文件修改的;'encodeBase64String' 不存在,并且使用:

int flag = 0;
String image_str = Base64.encodeToString(byte_arr, flag);

修复了问题。

于 2012-12-07T08:19:12.527 回答