我有一个通过Broadcastreceiver自动启动的应用程序,并将其设置为Android 2.3.3上的房屋屏幕。 HTC Desire HD上的API10。

该应用程序应在启动后立即反复播放视频,但是由于SDCARD还没有准备好,它会使用不消失的力量关闭错误消息杀死该应用程序。

至少我认为这是因为SDCARD。

在背景中,房屋屏幕重新启动,但错误消息不会消失,如果几秒钟后它会消失,那将是没有问题的,但是如果根本不出现的话,它会更大。

你能帮助我吗?谢谢!

编辑#1:这检查是否准备就绪SDCARD。我只需要阅读访问。

static public boolean hasStorage(boolean requireWriteAccess) {

    String state = Environment.getExternalStorageState();
    Log.v("tomi", "storage state is " + state);

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        if (requireWriteAccess) {
            boolean writable = checkFsWritable();
            Log.v("tomi", "storage writable is " + writable);
            return writable;
        } else {
            return true;
        }
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}
有帮助吗?

解决方案

您有解决方案吗?

首先,你不需要 两个都 “通过Broadcastreceiver自动启动”和“将其设置为房屋屏幕”。一个人应该足够,最好是后者。

活动启动后,它可以检查 Environment 查看是否准备好外部存储。如果没有,它可以注册一个接收器 ACTION_MEDIA_MOUNTED 找出何时准备好外部存储。一旦准备就绪 - 只有在那时 - 它可以尝试播放视频。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top