2015-12-18 25 views
1

这个问题从没有回答我的问题出现了: android start activity from background threadAndroid的startActivityForResult

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

我的主要活动通过timertask启动后台线程,稍后由用户启动其他应用程序移动到后台。然后背景TimerTask的线程试图例如为:

 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)取消注释,则相机在前景中开始,但是在主要活动onActivityResult中,在我呼叫startActivityForResult后立即调用,而不等待相机拍照。

回答

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); 
     } 
    }); 
+0

尝试已经为其他的意图,试图现在的MediaStore.ACTION_IMAGE_CAPTURE - 相机是没有看到在屏幕上。 –

+1

现在你的问题是什么? – Jas

相关问题