2011-03-08 58 views
0

我想提出一個媒體播放器,誰就能在後臺運行。我必須在這項服務中發送一個字符串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; 
    } 
} 

這正與靜態的URL,我在這個例子中使用。請建議我可以從我的活動類中獲取uri的價值。捆綁不在此類中工作

回答

-1

如果您嘗試從一個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");
}

+0

我想從一個活動發送一個字符串到我的服務類。這是不活動.. –

+0

是的,你可以從一個活動的任何其他訪問字符串(它可以服務等級或其他活動)。 – RAAAAM

相關問題