1

我有两个项目:一个 Android 主项目和一个 Android 库。在 Android 库中,我使用 Asynctasks 和来自 onPostExecute 的数据,我希望能够发送到正在导入该库的 android 项目。在这种情况下,主要项目是一个小部件应用程序,但我认为这不相关。我正在考虑在我的主项目中使用 onActivityResult ,但这似乎是个坏主意。

这就是我从主项目中调用我的库的方式:

 Intent libraryIntent = new Intent(context, ComplicatedRequest.class);
 libraryIntent.addFlags(Intent. FLAG_ACTIVITY_NEW_TASK);
 context.startActivity(libraryIntent);

在我的库项目中,在 onPostExecute 方法中,我不知道如何将数据从那里发送回我的应用程序。我几乎可以肯定这是一个微不足道的问题,但我宁愿问然后实施一个相当糟糕的实践解决方案。谢谢你。

4

2 回答 2

0
Use Intent and IntentFilter(Manifest)
<i>
 Intent intent = new Intent();
 intent.setAction(MY_ACTION);
 intent.put("key", value);
 context.startActivity(intent);
</i>

In Activity
<i>
 String s = intent.getExtra().getString("key");
 </i>
于 2013-07-26T12:41:00.137 回答
0

使用 startActivityForResult (参见http://developer.android.com/reference/android/app/Activity.html)(来自官方文档的示例):

public class MyActivity extends Activity {
    static final int PICK_CONTACT_REQUEST = 0;

    protected boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            // When the user center presses, let them pick a contact.
            startActivityForResult(
                new Intent(Intent.ACTION_PICK, new Uri("content://contacts")), PICK_CONTACT_REQUEST);
            return true;
        }
        return false;
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PICK_CONTACT_REQUEST) {
            if (resultCode == RESULT_OK) {
                // A contact was picked.  Here we will just display it to the user.
                startActivity(new Intent(Intent.ACTION_VIEW, data));
            }
        }
    }
}

您可以通过 data.getStringExtra(String name) (或其他类型,如果需要)检索值。

于 2013-07-26T13:02:46.537 回答