Использование переменной в одном классе в моем сервисе - PullRequest
0 голосов
/ 08 сентября 2011

Это часть моего основного класса:

  @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);      
}       
}

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Я не уверен, что он работает с 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 голосов
/ 08 сентября 2011

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

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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...