谁能帮助我解决问题?
我以前的android应用程序使用targetSdkVersion:19,然后我更改为26,但是出现了如下问题。
这是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>
答案 0 :(得分:0)
我相信您必须像这样预先设置软件包:
if (isBgMisicEnabled()) {
musicIntent.setPackage("onet")
musicIntent.putExtra("bgmusic", bgMusicRes);
ctx.startService(musicIntent);
}
或创建以下意图:
Intent musicIntent= new Intent(ctx, MusicService.class);
答案 1 :(得分:0)
使用
新意图(this,BGMUSIC.class)
代替
新意图(“ onet.BGMUSIC”)
由于安全隐患,隐式意图在最新版本中不是首选。因此,您应该使用类名
Intent serviceIntent =新的Intent(context,MyService.class); context.startService(serviceIntent);