我尝试在Java和Android之间实现跨平台序列化.我使用了Serializable,并将Android中的代码放在与桌面Java相同的包中.
来源:java-desktop序列化
Student student=new Student();
student.setName("John");
student.setSurname("Brown");
student.setNumber(776012345);
try {
FileOutputStream fout = new FileOutputStream("thestudent.dat");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(student);
oos.close();
}
catch (Exception e) { e.printStackTrace(); }
}
Run Code Online (Sandbox Code Playgroud)
来源:Android - 反序列化
File file=new File(getExternalFilesDir(null), "thestudent.dat");
try {
FileInputStream fint = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fint);
Student stud=(Student) ois.readObject();
ois.close();
}
catch (Exception e) { e.printStackTrace(); }
}
Run Code Online (Sandbox Code Playgroud)
Student是一个实现Serializable的类.在桌面上我将学生的实例序列化为"thestudent.dat".我把这个文件放在Android设备的SD卡上,我试图反序列化它.我收到错误java.lang.ClassCastException:javaserializace.Student.但为什么?序列化时我有相同的包,反序列化时包含相同的包.所有不同的是项目名称.你看到任何解决方案吗?
编辑 - 学生班的来源:
public class Student implements Serializable {
private String name;
private String surname;
private …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题
如何简单地将整数(获取值0-8)转换为char,例如C中的char [2]?
谢谢
我遇到了问题 - 我需要从Android APK(例如key.keystore)读取SecretKey,对于我的应用程序,它必须被读取为FileInputStream,但是从资产中我只得到inputStream.如何将inputStream转换为FileInputStream?或者有没有其他方法,如何从文件作为fileInputStream访问文件?
谢谢
你知道吗,如果有办法如何在Android的mapView中制作自定义缩放按钮?或者只有预先准备的变焦控制?
谢谢
Hmyzak
我一直在搜索并发现,android只支持SQLite数据库而不是其他.这是真的?
我强迫这个问题:
我需要知道我的应用程序的USS内存分配(=您的APP分配了多少RAM).我知道,有可能从"adb shell procrank"获取此信息,但我希望以编程方式获得它.有什么方法可以做到吗?还是任何功能齐全的代码片段?最多知道,我没有成功通过adb shell检查是不舒服和缓慢的.
在我的测试Android应用程序中,我打算创建和访问数据库文件,它将位于SD卡上.我在一个类的帮助下使用main活动,该类扩展了SQLiteOpenHelper.我想以与以前相同的方式使用它,但我必须以某种方式更改数据库PATH.你知道吗,如何实现它?
谢谢
我当前扩展SQLiteOpenHelper的类的代码:
public class DatabaseDefinition extends SQLiteOpenHelper{
private static final String DATABASE_NAME="test.db";
private static final int DATABASE_VERSION=1;
public DatabaseDefinition(Context context) {
super(context,DATABASE_NAME,null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "+TABLE_NAME+" ("+ _ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ NAME+" TEXT NOT NULL, " +SURNAME+" TEXT NOT NULL, "+PHONE+" INT NOT NULL);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db);
}
Run Code Online (Sandbox Code Playgroud)
和我的主要代码:
public class DatabaseExampleActivity extends Activity …Run Code Online (Sandbox Code Playgroud) 我想在Android的SQLite中实现删除列.我想制作没有所需列的表格复制,而不是删除以前的平板电脑并将名称设置为new_one作为以前的名称.我已经制作了表到表的副本,但现在我把它作为1:1的副本.如何在复制时更改列?
目标是拥有方法deleteColumn(int indexOfColumn) ;
谢谢
有什么办法,如何确定Android应用程序中的实际分配内存(代码中)?
谢谢
航点
我有byte []数组,其中包含mp3文件。有什么方法可以在不创建临时文件的情况下播放mp3文件?
谢谢
编辑:
我尝试了临时文件方法:
File tempMp3 = File.createTempFile("test", ".mp3", getCacheDir());
//tempMp3.deleteOnExit();
FileOutputStream fos = new FileOutputStream(tempMp3);
fos.write(bytes);
fos.close();
mediaPlayer = MediaPlayer.create(getApplicationContext(),Uri.fromFile(tempMp3));
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)
而且我仍然收到NullPointerException。我正在将字节数组(称为字节)写入文件,我保持其引用并使用它。但仍然获得NPE。你知道错在哪里吗?