Отправлять сообщение из действия, которое запускает действие, тому, которое запускается при нажатии на уведомление - PullRequest
3 голосов
/ 10 марта 2012

Я хочу отправить сообщение из действия, которое запускает уведомление, в действие, которое запускается, когда пользователь нажимает на уведомление.

Я просто хочу, чтобы значение EditText отправлялось из одного действия в другое, когда я нажимал кнопку через уведомление. Я попытался использовать putExtra в Intent, но затем он показал исключение NullPointer.

Пошел по этой ссылке

Как отправить параметры из уведомления-клика в активность?

Я использовал onNewIntent, но все равно не получаю вывод

package com.pdd.notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class NotificationDemoActivity 
extends Activity implements OnClickListener
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button b=(Button) findViewById(R.id.button1);
    b.setOnClickListener(this);
}

public void onClick(View v) {

    EditText et=(EditText) findViewById(R.id.editText1);
    String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = 
                       (NotificationManager)getSystemService(ns);

    int icon = android.R.drawable.ic_dialog_alert;
    CharSequence tickerText = "Hello";
    long when = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, when);


    Context context = getApplicationContext();
    CharSequence contentTitle = "My notification";
    CharSequence contentText = "Hello World!";
    Intent notificationIntent = new Intent(this, Second.class);
    notificationIntent.putExtra("im",et.getText().toString() );
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,    
    notificationIntent, 0);


    notification.setLatestEventInfo(context, contentTitle, contentText, 
    contentIntent);

    final int HELLO_ID = 1;

    mNotificationManager.notify(HELLO_ID, notification);

}
}

package com.pdd.notification;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;


public class Second extends Activity  {


@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.second);

    /*Intent i=getIntent();
    if(i==null)
        return;

    Bundle b=i.getExtras();

    String s=b.getString("im"); //incoming message

    EditText et=(EditText) findViewById(R.id.editText1);

    et.setText(s);


    */
}

@Override
protected void onNewIntent(Intent intent) {

    //Intent i=getIntent();

    if(intent!=null)
    {


    Bundle b=intent.getExtras();

    String s=b.getString("im"); //incoming message

    EditText et=(EditText) findViewById(R.id.editText2);

    et.setText(s);
    Log.d("p",s);
    }
    super.onNewIntent(intent);
}
 }

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pdd.notification"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".NotificationDemoActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <activity android:name=".Second" android:launchMode="singleTop"></activity>
   </application>

 </manifest>

1 Ответ

0 голосов
/ 11 марта 2012

Я получил решение после прохождения демонстраций API Произведено следующее изменение

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent,PendingIntent.FLAG_UPDATE_CURRENT);
...