android - java - 将文件发送到服务器时 Android HttpPost 黑屏

标签 android android-asynctask http-post

我正在将图像和音频文件发送到我的 php 服务器。我为此使用 Asynctask。我的计划中有两项 Activity 。问题是如果我像这样从 MainActivity 启动我的第二个 Activity (AudioActivity)

upload_audio.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, AudioActivity.class);
        startActivity(intent);
    }

});

然后,当我单击按钮 upload_audio 时,屏幕变黑,但进程仍在成功运行。因此,如果我将此音频 Activity 设置为我的 mainActivity,那么一切都会正常运行。那么如何在从 MainActivity 启动 Activity 时让我的应用程序在处理文件期间仍然可见。希望您理解我的问题

这是我的AudioActivity代码

public class AudioActivity extends Activity {

    private static final int SELECT_AUDIO = 2;
    String selectedPath = "";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        upload();
    }


    public void upload() {
        ArrayList<Uri> fileName = getFileList(this);
        for ( int i = 0 ; i < fileName.size() ; i++ )
        {
            try {
                selectedPath = getPath(fileName.get(i)).toString();
                System.out.println(getPath(fileName.get(i)));

                new AudioSync(selectedPath).execute(getPath(fileName.get(i))).get();
                // AudioSync sync = new AudioSync(getPath(fileName.get(i))).get;
                //new AudioSync().execute("").get();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ExecutionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }


    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Audio.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }


    private ArrayList<Uri> getFileList(Context context) {
        Cursor actualimagecursor = null;
        ArrayList<Uri> fileList = new ArrayList<Uri>();
        try
        {
            String[] proj = { MediaStore.Audio.Media.DATA, MediaStore.Audio.Media._ID };
            actualimagecursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj,
                    null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

            int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);

            for ( int i = 0 ; i < actualimagecursor.getCount() ; i++ )
            {
                actualimagecursor.moveToPosition(i);
                String fileName = actualimagecursor.getString(actual_image_column_index);
                fileList.add(( Uri.withAppendedPath( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, fileName )));
            }
            return fileList;
        }
        catch ( Exception e )
        {
            return null;
        }
    }

}

最佳答案

您不想创建用于上传或播放音频的 Activity 。 Activity 始终与 View 相关联,并用于与用户交互。 http://developer.android.com/guide/components/activities.html

您想使用一项服务来做到这一点:http://developer.android.com/guide/components/services.html

关于android - java - 将文件发送到服务器时 Android HttpPost 黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21967871/

相关文章:

android - Eclipse 缺少项目属性中的 C/C++ 构建和常规

android - 在 Android 的单独线程中访问数据库

从 sqlite 获取数据时的 Android 进度对话框

flutter - 如何在Flutter中发布x-www-form-urlencoded

java - 错误: Java Virtual Machine Launcher.找不到主类

android - 电池的最佳使用

java - 使用 AsyncTask 时出现 ExceptionInInitializerError

javascript - 如何为 JavaScript 设置 HttpPost 和 header ?

android - 保持 ListView 的第一项固定并在该项目之后从数据库添加数据

android - 如何将数据从 onSuccess 传递到其他类?