如何在服务中传递值?

时间:2011-03-08 07:01:12

标签: android service android-activity android-intent

我正在制作一个可以在后台运行的媒体播放器。我必须在此服务中发送字符串uri。 但我无法通过bundle.Services类从我的活动发送uri值不支持getIntent()并显示错误。 我如何通过活动发送uri服务。 请帮忙

package com.abc.activity;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class MyService extends Service {
    private static final String TAG = "MyService";
    MediaPlayer player;
    String uri,url;
    Bundle b;
    AudioPlayer2 ap;


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

    @Override
    public void onCreate() {
        Log.d(TAG, "onCreate");

        Uri path=Uri.parse("/mnt/sdcard/download/abc.mp3");
        player = MediaPlayer.create(this,path );
        player.setLooping(false); // Set looping
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        //Bundle extras = getIntent().getExtras();
        player.start();
    }
    public void getValue(String uri)
    {
        url=uri;
    }
}

这适用于我在此示例中使用的静态网址。请建议我可以从我的活动课程中获取uri的价值.Bundle不在此课程中工作

2 个答案:

答案 0 :(得分:2)

您应该使用IntentService http://developer.android.com/reference/android/app/IntentService.html

实施onHandleIntent(Intent intent),每次使用startService(intent)开始服务时都会调用此{{1}}。您可以通过此意图将数据传递给服务。

答案 1 :(得分:-1)

如果您尝试将一个字符串或String-array从一个Activity发送到另一个Activity,则可以在Intent中完成。

在ClassA中:

Intent intent = new Intent(this, ClassB);
tring[] myStrings = new String[] {"test", "test2"};
intent.putExtra("strings", myStrings);
startActivity(intent);

在ClassB中:

public void onCreate() {
Intent intent = getIntent();
String[] myStrings = intent.getStringArrayExtra("strings");
}