如何将android对象转换为字节数组并执行它?

时间:2016-05-20 10:01:25

标签: android serialization wear-os android-bundle

我正在使用消息api在智能手机和智能手表之间发送消息。因为它只能将字节数组作为数据发送,所以我希望在接收时发送和反转转换时将对象转换为字节数组。

我使用了以下从互联网上获得的代码。但我得到java.io.NotSerializableException。有没有更好的方法呢?

我的对象将有一个字符串值和一个android包。两者都需要从一台设备发送并在另一端接收。

public static byte[] toByteArray(Object obj) throws IOException {
        byte[] bytes = null;
        ByteArrayOutputStream bos = null;
        ObjectOutputStream oos = null;
        try {
            bos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(bos);
            oos.writeObject(obj);
            oos.flush();
            bytes = bos.toByteArray();
        } finally {
            if (oos != null) {
                oos.close();
            }
            if (bos != null) {
                bos.close();
            }
        }
        return bytes;
    }

public static Event toObject(byte[] bytes) throws IOException, ClassNotFoundException {
        Event obj = null;
        ByteArrayInputStream bis = null;
        ObjectInputStream ois = null;
        try {
            bis = new ByteArrayInputStream(bytes);
            ois = new ObjectInputStream(bis);
            obj = (Event) ois.readObject();
        } finally {
            if (bis != null) {
                bis.close();
            }
            if (ois != null) {
                ois.close();
            }
        }
        return obj;
    }

1 个答案:

答案 0 :(得分:0)

 public void toByteArray(Object obj) throws IOException {
    FileOutputStream outputstream = new FileOutputStream(new File("/storage/emulated/0/Download/your_file.bin"));
    outputstream.write((byte[]) obj);
    Log.i("...","Done");
    outputstream.close();
}

试试这可能对您有用,它会将您的文件存储在智能手机的下载文件夹中。