0

私のアプリケーションでは、メソッドを使用して別のアクティビティ(外部アクティビティ)を起動しますstartActivity。この2番目のアプリケーションが開始されたときに通知を受け取りたいので、startActivityForResultメソッドの代わりにメソッドを使用できますstartActivity。そのような通知を受け取る他のメカニズムはありますか?

4

1 に答える 1

1

これを試すことができます。最初のアクティビティで、2番目のアクティビティを呼び出す場所でstartServiceを呼び出します。

startService(new Intent(this、NotificationService.class));

以下で構成されるNotificationService.javaを作成します。

package com.sample;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;

 import android.app.Notification;
   import android.app.NotificationManager;
   import android.app.PendingIntent;
   import android.app.Service;
   import android.content.Context;
  import android.content.Intent;

  import android.os.IBinder;
  import android.preference.PreferenceManager;
  import android.util.Log;
  import android.widget.Toast;
  public class NotificationService extends Service
   {
private final int UPDATE_INTERVAL = 10 * 1000;
private Timer timer = new Timer();  
private static final int NOTIFICATION_EX = 1;
private static final String TAG = "NotificationService";
private NotificationManager notificationManager;
ArrayList<HashMap<String, String>> currentForecast = new ArrayList<HashMap<String, String>>();

CharSequence tickerText="notifi";
public NotificationService(){}

public IBinder onBind1(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}


@Override   
public void onCreate() {
  //code to execute when the service is first created

}   

@Override   
public void onDestroy() {   

    if (timer != null){
        timer.cancel();
    } 
}

@Override

public  int onStartCommand(final Intent intent, final int flags, final int startid) {  

    notificationManager = (NotificationManager) 
    getSystemService(Context.NOTIFICATION_SERVICE);


    int icon = R.drawable.iconToDisplayOnNotification;
    long when = System.currentTimeMillis();

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

    final Context context = getApplicationContext();
    final CharSequence contentTitle = "titleForNotification";
    final CharSequence contentText = "TextForNotification";
    Intent notificationIntent = new Intent(this, ActivityTobeCalledOnNotificationSelect.class);
    final PendingIntent contentIntent = PendingIntent.getActivity(this,0, notificationIntent, 0);

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

    notificationManager.notify(NOTIFICATION_EX, notification);

    Toast.makeText(this, "Started!", Toast.LENGTH_LONG);
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            // Check if there are updates here and notify if true
             Log.w(TAG,"run");
        }       

    }
,10, UPDATE_INTERVAL);

    return START_STICKY ;


}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

}

于 2012-04-27T09:29:24.700 に答える