Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从位于Android库中的AsyncTask向project Android AppWidgetProvider发送数据_Android_Android Library - Fatal编程技术网

从位于Android库中的AsyncTask向project Android AppWidgetProvider发送数据

从位于Android库中的AsyncTask向project Android AppWidgetProvider发送数据,android,android-library,Android,Android Library,我有两个项目:一个Android主项目和一个Android库。在Android库中,我使用Asynctasks和onPostExecute中的数据,我希望能够将这些数据发送到导入该库的Android项目。在这种情况下,主要项目是一个小部件应用程序,但我认为这不应该是相关的。 我曾考虑在我的主要项目中使用onActivityResult,但这似乎是个坏主意 以下是我在主项目中调用我的库的方式: Intent libraryIntent = new Intent(context, Complica

我有两个项目:一个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方法中,我不知道如何将数据从那里发送回我的应用程序。我几乎可以肯定这是一个无关紧要的问题,但我宁愿问,然后实施一个相当糟糕的实践解决方案。谢谢。

使用意向和意向过滤器(清单)
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>
意图=新意图(); 意图。设置动作(我的动作); 意图。放置(“键”,值); 背景。开始触觉(意图); 活跃 字符串s=intent.getExtra().getString(“键”);
使用startActivityForResult(参见)(官方文件中的示例):

您可以通过data.getStringExtra(字符串名称)(或其他类型,如果需要)检索值

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