我试着记录我自己解决方案的相关部分,以防万一,这可能会对某人有所帮助。如果你看到里面有什么问题,请告诉我(我只是在学习)。
我不知道我可以从统一的方面将上下文“注入”到需要它的Java类的收缩器中。我在这个论坛上找到的,谢谢你!
统一方:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
AndroidJavaObject jo = new AndroidJavaObject("com.my.package.MyDbHelper", context);
string word = jo.Call<string>("returnData");
tx.text = word;
这将把上下文传递给Android Studio Java类构造器,然后初始化SQLite数据库和一个将操作它的助手类。例如,Android Studio中的类相关数据:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
// implement as documentation describes, link is provided bellow
}
// this is the class, addressed from Unity
public class MyDbHelper{
String str = null;
private SQLiteDatabase db;
MySQLiteOpenHelper mySQLiteOpenHelper;
public myDbHelper(Context context) {
mySQLiteOpenHelper = new mySQLiteOpenHelper(context);
db = mySQLiteOpenHelper.getWritableDatabase();
}
// this is the method that unity calls
public String returnData(){
return queryAndDisplayAll();
}
private String queryAndDisplayAll() {
// using Cursor and db perform query and get the result, say, in a str, and return it, that is like:
// Cursor cursor = db.query(DicSQLiteOpenHelper.TABLE_NAME,...
// str = ...result from Curson...
return (str == null ? "No result!" : str);
}
在这里,您可以阅读有关sqliteOpenHelper的信息:
Link to SQLiteOpenHelper documentation.