0

我有一个通过 BroadcastReceiver 自动启动的应用程序,并在 Android 2.3.3 上设置为主屏幕。HTC Desire HD 上的 API10。

该应用程序应在启动后立即重复播放视频,但由于 sdcard 尚未准备好,它会以不会消失的强制关闭错误消息杀死应用程序。

至少我认为这是因为 sdcard。

在后台,主屏幕重新启动,但错误消息并没有消失,如果它在几秒钟后消失也没问题,但如果它根本不出现就更大了。

你能帮助我吗?谢谢!

编辑#1:这会检查 SD 卡是否准备好。我只需要读取权限..

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;
}
4

1 回答 1

2

你有解决方案吗?

首先,您不需要“通过 BroadcastReceiver 自动启动”“设置为主屏幕”。一个就足够了,最好是后者。

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

于 2012-02-15T19:48:15.810 回答