Android startActivityForResult не возвращает данные календаря

   The code Written below works for me

                Intent intent = new Intent(Intent.ACTION_EDIT);
                intent.setType("vnd.android.cursor.item/event");
                intent.putExtra("title", "Hi this me");
                intent.putExtra("description", "Some description");
                intent.putExtra("beginTime", eventStartInMillis);
                intent.putExtra("endTime", eventEndInMillis);
                startActivityForResult(intent, 1);

Мой вопрос в том, что я не могу вернуть данные календаря Android в OnActivityResult, я не знаю, почему, пожалуйста, помогите мне в этой проблеме.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1) {

     if(resultCode == RESULT_OK){

      String result=data.getStringExtra("title");

}


And i am getting data.getExtras() is null !!!!!

Ответ 1

Это так, потому что код результата всегда возвращается 0 В календаре android Результат действия неявного намерения календаря попытается использовать RESULT_CANCEL в onActivity result

public void onActivityResult (int reqCode, int resultCode, Intent data) {

super.onActivityResult(reqCode, resultCode, data);

switch (reqCode) {

if (resultCode == Activity.RESULT_CANCEL)

И вам нужно просто проверить Следующий идентификатор события, он будет работать Надеюсь, это поможет вам.

Говинд

Ответ 2

Если вы посмотрите официальную документацию: http://developer.android.com/reference/android/app/Activity.html#setResult (int, android.content.Intent) вы увидите, что намерение, которое вы получаете в onActivityResult(), фактически зависит от действия, которое вы вызываете. Более конкретно, это зависит от того, использует ли вызываемая активность setResult (int, android.content.Intent) с Intent с дополнительными функциями или нет.

Из быстрого поиска в Интернете кажется, что код, который вы используете, предназначен для добавления события в Календарь, но это не обязательно означает, что вы получите данные события из приложения "Календарь". Perhups вы должны запросить календарь после этого, чтобы получить их.

Что касается приложения "Контакты", оно конкретно указывается в "Руководство поставщика контактов" , что вы можете получить контактные данные в onActivityResult(), если вы используете startActivityForResult. В руководстве поставщика календаря такой инструкции нет, поэтому он, вероятно, не поддерживается.

Ответ 3

Вы можете использовать этот код:

public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
 if (resultCode == Activity.RESULT_OK) {
        Bundle extras = data.getExtras();
        String title=extras.getString("title");
        String description=extras.getString("description");
        String beginTime=extras.getString("beginTime");
        String endTime=extras.getString("endTime");

Ответ 4

Проблема заключается в том, что вы непосредственно отправляете данные в намерение и извлекаете их через Bundle.

Попробуйте следующее:

Нарисуйте объект пакета следующим образом:

Intent i = new Intent("yourFullyQualifiedClassName");

 Bundle extras = new Bundle();
 extras.putString("title", "Hi this me");
 extras.putString("description", "Some description");
 i.putExtras(extras);

Затем извлеките данные из пакета следующим образом:

Bundle bundle = data.getExtras();

bundle.getString("title");

Надеюсь, что это решает вашу проблему.

Ответ 5

Это потому, что вы передаете данные активности, которую вы начали (Activity B), с помощью startActivityForResult из Activity A. onActivityResult() будет получать данные, передаваемые Activity B, а не Activity A.

Вот хороший учебник о намерениях Android.

http://www.vogella.com/articles/AndroidIntent/article.html

и этот сайт тоже

http://saigeethamn.blogspot.jp/2009/08/android-developer-tutorial-for_31.html