Wiem, jest ich mnóstwo tutaj, ale próbowałem rozwiązania przez cały dzień i nigdzie się nie dostałem. Ani przykład na dokumentach Google, ani żaden z 5 innych sposobów, które tu znalazłem, w ogóle dla mnie działały. Podobnie jak w przypadku typowym, po kliknięciu powiadomienia zamyka się pasek stanu i nic nowego nie jest wyświetlane na ekranie. Tworzę powiadomienie z usługi i chcę, aby powiadomienie wywołało nowe działanie, które nie zostało jeszcze utworzone. Potrzebuję też sposobu na przekazanie informacji do tego działania za pomocą intencji.uruchamianie z usługi po kliknięciu powiadomienia
I tak ... to jest Java dla Androida
co za tym idzie są rozbitej resztki mojego kodu.
package com.bobbb.hwk2;
import java.io.FileOutputStream;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.IBinder;
import android.provider.ContactsContract;
import android.widget.Toast;
public class contactBackup extends Service
{
private NotificationManager nManager;
private static final int NOTIFY_ID = 1100;
@Override
public void onCreate()
{
super.onCreate();
String ns = Context.NOTIFICATION_SERVICE;
nManager = (NotificationManager)getSystemService(ns);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
// inform user that service has started
Toast.makeText(getApplicationContext(), R.string.service_started,Toast.LENGTH_LONG).show();
String data = lookUpContacts();
if(saveToSDCard(getResources().getString(R.string.backup_file_name),data))
{
Context context = getApplicationContext();
// create the statusbar notification
Intent nIntent = new Intent(this,contactViewer.class);//Intent nIntent = new Intent(Intent.ACTION_MAIN);
nIntent.setClass(context,contactViewer.class);
//nIntent.putExtra("data",data);
Notification msg = new Notification(R.drawable.icon,"All contacts records have been written to the file.",System.currentTimeMillis());
// start notification
//PendingIntent pIntent = PendingIntent.getService(getApplicationContext(),0,nIntent,PendingIntent.FLAG_UPDATE_CURRENT|Intent.FLAG_FROM_BACKGROUND);
PendingIntent pIntent = PendingIntent.getActivity(this,0,nIntent,0);
msg.flags = Notification.FLAG_AUTO_CANCEL;
msg.setLatestEventInfo(context,
"success",
"All contacts records have been written to the file.",
pIntent);
nManager.notify(NOTIFY_ID,msg);
}
}
@Override
public void onDestroy()
{
nManager.cancel(NOTIFY_ID);
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
// function returns string containing information
// from contacts
public String lookUpContacts()
{
...
}
public boolean saveToSDCard(String fileName, String data)
{
...
}
}
mogę tylko mieć nadzieję, że wszystko, co jest przyczyną mojego problemu jest coś naprawić i nie więcej szalonych trzasków ja dostaję z Eclipse (co wydaje się nikt inny by kiedykolwiek widziałem>: U)
Jeśli możesz mi pomóc rozwiązać ten problem, udostępnij. Jeśli nie możesz pomóc z tym konkretnym problemem, ale czuję się zobowiązany powiedzieć niepowiązanych rzeczy o delegowaniu, stylów, tematów lub dobrej praktyki, to nie
Dziękuję: D
dobrze , tak naprawdę nie używasz putExtra ... Ale w oparciu o twoją radę próbowałem addi Ta flaga oznaczała zarówno zamiar, jak i oczekiwanie i żadna z nich nie zrobiła żadnej różnicy. W każdym razie dzięki. – user980058
Twoja edycja pasuje do tego, co zrobiłem. nadal nie ma kości: 3 – user980058