将targetSDKVersion从19更改为26时出错的Android应用

时间:2018-08-04 15:22:19

标签: java android targetsdkversion

谁能帮助我解决问题?

我以前的android应用程序使用targetSdkVersion:19,然后我更改为26,但是出现了如下问题。

This LogCat

这是MusicManager.java代码的片段

  private static Intent musicIntent = new Intent("onet.BGMUSIC");

public void play() {
    if (isBgMisicEnabled()) {
        musicIntent.putExtra("bgmusic", bgMusicRes);
        ctx.startService(musicIntent);
    }
}

public void stop() {
    ctx.stopService(musicIntent);
}

这是BaseActivity.java代码的代码段

    public static MusicManager musicMgr = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initMusic();
}

private void initMusic() {
    if (musicMgr == null) {
        musicMgr = new MusicManager(this);
    }
    playMusic();
}

protected void playMusic() {
    if (musicMgr != null) {
        musicMgr.play();
    }
}

protected void stopMusic() {
    if (musicMgr != null) {
        musicMgr.stop();
    }
}

这是WelcomeActivity.java代码的代码段

    @Override
protected void playMusic() {
    if (musicMgr != null) {
        musicMgr.setBgMusicRes(R.raw.welcomebg);
        musicMgr.play();
    }
}


private void initMusicSetting() {
    ivMusic = (TextView) findViewById(R.id.music);
    setGameMusic();
    if (musicMgr != null) {
        musicMgr.setBgMisicEnabled(LevelCfg.globalCfg.isGameBgMusic());
    }
}

这是Manifest.xml代码的片段

        <service
        android:name="onet.sound.MusicService"
        android:exported="false" >
        <intent-filter>
            <action android:name="onet.BGMUSIC" />

            <category android:name="android.intent.category.default" />
        </intent-filter>
    </service>

2 个答案:

答案 0 :(得分:0)

我相信您必须像这样预先设置软件包:

if (isBgMisicEnabled()) {
    musicIntent.setPackage("onet")
    musicIntent.putExtra("bgmusic", bgMusicRes);
    ctx.startService(musicIntent);
}

或创建以下意图:

Intent musicIntent= new Intent(ctx, MusicService.class);

如此处所示:Service Intent must be explicit: Intent

答案 1 :(得分:0)

使用

新意图(this,BGMUSIC.class)

代替

新意图(“ onet.BGMUSIC”)

由于安全隐患,隐式意图在最新版本中不是首选。因此,您应该使用类名

Intent serviceIntent =新的Intent(context,MyService.class); context.startService(serviceIntent);