2011-09-07 2 views
0

Это часть моего основного класса:Использование переменной в одном классе в моей службе

@Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.startsWith("http://xxxxxx.com/songs2/Music%20Promotion/Stream/")) {        
      try { 
       songURL = new URL(url); 
      } catch (MalformedURLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      filename = songURL.getFile(); 
        startService(new Intent(mainmenu.this, MyService.class)); 

Теперь это должно получить название воспроизводимой песни, но у меня есть сервис, который начинается уведомление, когда песня играет, и я хочу, чтобы она отображала имя файла, поэтому как передать эту переменную в мой класс сервиса?

Вот мой класс обслуживания, я хочу, чтобы отобразить его под contentText, где он говорит: «Сейчас в программе ...»

public class MyService extends Service { 

private static final int HELLO_ID = 1; 
private static final String ns = Context.NOTIFICATION_SERVICE; 
NotificationManager mNotificationManager; 


@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 

} 

@Override 
public void onStart(Intent intent, int startid) { 

    Context context2 = getApplicationContext(); 
    CharSequence text = "Buffering..."; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context2, text, duration); 
    toast.show(); 

    mNotificationManager = (NotificationManager) getSystemService(ns); 

    int icon = R.drawable.notification_icon; 
    CharSequence tickerText = "Now playing..."; 
    long when = System.currentTimeMillis(); 

    Notification notification = new Notification(icon, tickerText, when);  
    Context context = getApplicationContext(); 
    CharSequence contentTitle = "Music Promotion"; 
    CharSequence contentText = "Now Playing..."; 
    Intent notificationIntent = new Intent(this, mainmenu.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);    
    mNotificationManager.notify(HELLO_ID, notification);   
} 
@Override 
public void onDestroy() { 
    mNotificationManager.cancel(HELLO_ID);  
}  
} 
+0

Вы можете передать любую дополнительную информацию в свой комплект с помощью дополнительных опций Intent? Таким образом, вы можете создать пакет, добавить строку к нему с помощью putString, а затем добавить этот комплект в свои намерения, используя putExtras (bundle). –

ответ

1

Я не уверен, если он работает с Service, но я думаю, что вы может создать Bundle с Intent, а затем получить данные от этого. Попробуйте это в главном классе:

Bundle bundle = new Bundle(); 
bundle.putString("variablename", "some data"); // Basically just a name and your data 

// Create a new Intent with the Bundle 
Intent intent = new Intent(); 
intent.setClass(mainmenu.this, MyService.class); 
intent.putExtras(bundle); 
startService(intent); 

А потом сделать это в Service классе, чтобы получить данные:

Bundle bundle = this.getIntent().getExtras(); 
String variable = bundle.getString("variablename"); // Retrieve your data using the name 
0

Вы можете легко добавить любую информацию, вы хотите в Intent вы используете, чтобы начать служба:

Intent i = new Intent(mainmenu.this, MyService.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("songName", "THIS IS THE SONGS NAME"); 

Тогда в службе вы можете извлечь информацию с:

Bundle extras = this.getIntent().getExtras(); 
String songName = null; 

if (extras != null) { 
    songName = extras.getString("songName"); 
} 
+0

с использованием этого метода getIntent() выделяется в eclipse –

 Смежные вопросы

  • Нет связанных вопросов^_^