来自后台线程的android startActivityForResult

时间:2015-12-18 05:16:25

标签: android multithreading startactivityforresult

这个问题来自我的问题的答案:  android start activity from background thread

从我在这个问题上的努力,我现在认为后台线程没有办法为用户输入做startActivityForResult并获得结果(例如通过onActivityResult)。请确认现在不可能通过已知的方法或建议解决方法(或Android版本的工作原理,我尝试了4倍)。我在下面调查的选项详情:

我的主要活动通过timertask启动后台线程,稍后用户启动其他应用程序后移动到后台。然后后台时间任务线程尝试例如:

$percorso

如果代码如上所述,stampaOggettoCollezione已注释,则相机将在主活动堆栈级别的后台启动。如果 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { //takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); //startActivity(takePictureIntent); } 取消注释,则相机会在前台启动,但是,在我调用setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)后立即调用主要活动setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),而不等待相机拍照。

1 个答案:

答案 0 :(得分:0)

尝试使用runOnUiThread在主线程中执行代码:

runOnUiThread(new Runnable() {
        @Override
        public void run() {
           Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    });