Android - 在服务中安装OBB

时间:2015-04-08 00:25:04

标签: android android-activity

我正在编写一个包含服务的应用程序,并从服务中安装OBB文件。 我在提及此文档:http://developer.android.com/reference/android/os/storage/StorageManager.html http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html

但是,onObbStateChange()回调永远不会发生。

如果我在应用程序的活动中使用相同的代码,它会成功安装并访问OBB文件的内部。

以下是代码段:

// Extend OnObbStateChangeListener class
public class MyService extends Service {
  static StorageManager storageManager;

  static class Observer extends OnObbStateChangeListener {
    @Override
    public void onObbStateChange(String path, int state) {
      Log.v(TAG, path + " " + state); // 1
    }
  }
}

// Mount obb
public void getMountedPath() {
  File file = new File("<path to obb file>");
  if(!obbFile.exists())
    return;
  Observer observer = new Observer();
  boolean state = storageManager.mountObb(obbFile.getAbsolutePath(), null, obbObserver);
  Log.v(TAG, "state: " + state); // 2 It always prints TRUE
}

知道为什么它无法从我的服务类挂载?

更多观察结果:

当我第一次执行应用程序时,我在第二个日志语句中将mount状态设置为TRUE,并且不会调用onObbStateChange()。

然而,当我第二次运行我的应用程序时,我看到onObbStateChange()的第一个日志,它打印状态为24,这意味着ERROR_ALREADY_MOUNTED。

所以似乎obb在第一次尝试中被挂载,但是onObbStateChange()由于某种原因没有被调用。

有关此行为的任何解释?

0 个答案:

没有答案