Java 如何使用android的SE启用流媒体应用程序

Java 如何使用android的SE启用流媒体应用程序,java,android,sdk,selinux,Java,Android,Sdk,Selinux,我问了一个问题,关于一个带有HTML音频流的Ionic应用程序,它在某些Android手机上无法正常工作 我发现问题在于Android SE中的“强制”模式 由于我还没有找到任何解决爱奥尼亚/Cordova问题的方法,我决定用原生Android SDK启动该应用程序 不幸的是,我对本机SDK也有同样的问题:流在“强制”中设置了SE for Android的手机中不起作用 我发现有问题的手机是三星Galaxy S6、三星Galaxy S6 Edge、三星Galaxy Note 5和索尼Xperia

我问了一个问题,关于一个带有HTML音频流的Ionic应用程序,它在某些Android手机上无法正常工作


我发现问题在于Android SE中的“强制”模式

由于我还没有找到任何解决爱奥尼亚/Cordova问题的方法,我决定用原生Android SDK启动该应用程序

不幸的是,我对本机SDK也有同样的问题:流在“强制”中设置了SE for Android的手机中不起作用

我发现有问题的手机是三星Galaxy S6、三星Galaxy S6 Edge、三星Galaxy Note 5和索尼Xperia Z4

这是应用程序的java代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;


public class Player extends AppCompatActivity {
    private MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_player);
        mp = new MediaPlayer();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try{
            mp.setDataSource("http://69.175.58.196:80/stream");
            mp.prepareAsync();
            mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}
这是AndroidManifest.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.goradio.ovoradioclub">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />



    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Player">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

似乎我遗漏了一些与SE有关的东西

我也是一名Linux系统管理员,我知道处理SE的唯一方法是根访问

该应用程序的想法是免费进入PlayStore,这样人们就可以只听音乐流了,所以我不能选择通过根设备禁用SE

似乎我遗漏了一些与SE有关的东西

我刚刚在Nexus5上运行了你的代码,运行的是Android 6.0
getenforce
,运行于
adb shell
,在此设备上显示
Enforcing
。这条小溪的水流很好。 Nexus 5X也是如此

我不怀疑您在所引用的设备上有问题。然而,SE强制执行状态似乎是巧合,而不是问题的实际根源


您可能希望查看LogCat,看看是否有任何有趣的消息。注意,<代码>媒体播放器有一种倾向于记录异常的严重性(例如,我认为在警告严重性下记录的错误)。此外,这些消息不会来自您的进程,因此请务必查看所有LogCat,而不是只显示您自己进程的过滤视图。

“我已经确定问题在于Android SE中的“强制”模式”——嗯,您是如何确定这一点的?你的确切症状是什么?因为只有在“强制执行”中安装了SE for android的手机不能工作。对不起,我在谷歌上没有找到很多关于SE Android的信息。我是根据SELinux的经验确定的。这并不能解释你的症状是什么。症状是在SE处于“强制”模式的手机中,流永远不会启动。没有显示错误,或者什么都没有,它就是不工作。其他任何一款手机都工作正常,应用程序启动,流媒体开始播放。我不知道LogCat。我将用它进行测试,如果我找到任何解决方案,请写在这里。