首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动服务会引发IllegalAccessException

启动服务会引发IllegalAccessException
EN

Stack Overflow用户
提问于 2011-11-27 00:58:12
回答 2查看 3.4K关注 0票数 6

我有一个可以接收音频文件并用MediaPlayer播放的Service。我就是这么叫我的Service

代码语言:javascript
复制
private void playAudio(String url) throws Exception {
    Intent music = new Intent(this,MusicService.class);
    music.putExtra("paths", path);
    startService(music);
}

这是我的Service类:

代码语言:javascript
复制
class MusicService extends Service implements OnCompletionListener {
    MediaPlayer mediaPlayer;
    String musicFile;

    @Override
    public void onCreate() {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setOnCompletionListener(this);
        Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG).show();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Bundle e = intent.getExtras();
        musicFile= e.getString("paths"); 
        try {
            mediaPlayer.prepare(); 
            mediaPlayer.setDataSource(musicFile);
        } catch (IllegalArgumentException i) {
            // TODO Auto-generated catch block
            i.printStackTrace();
        } catch (IllegalStateException i) {
            // TODO Auto-generated catch block
            i.printStackTrace();
        } catch (IOException i) {
            // TODO Auto-generated catch block
            i.printStackTrace();
        }
        if (!mediaPlayer.isPlaying()) {             
            mediaPlayer.start();             
        } 
        return START_STICKY; 
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }
}

Service永远不会执行,Toast永远不会显示,MediaPlayer也不会播放。

我在我的清单中这样声明:

代码语言:javascript
复制
<service android:name=".MusicService" android:enabled="true"></service>

我得到了一个强制关闭错误,在我的日志中有这个IllegalAccessException

代码语言:javascript
复制
java.lang.RuntimeException: Unable to instantiate service unjustentertainment.com.MusicService:
    java.lang.IllegalAccessException: access to class not allowed
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-27 02:25:23

你得到的异常是因为系统无法初始化你的服务(调用它的构造函数),因为它是不可访问的。

正如它所说的here

...Make确保类声明为公共...

您发布的类不是公共的,因此将其设置为公共的。

票数 12
EN

Stack Overflow用户

发布于 2011-11-27 02:29:18

您需要将您的类公开。即

代码语言:javascript
复制
 public class MusicService extends Service implements OnCompletionListener {
          MediaPlayer mediaPlayer;
           String musicFile;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8280035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档