让测试知道它可以在应用程序到达特定点后运行 - 可能是共享Pref



tl;dr - 找到一种方法让测试知道它只有在我的游戏主菜单加载后才能运行

我正在用LibGDX编写一个游戏,它实际上不使用Android代码,我有一个测试类,我用它来测试游戏的各种视觉方面。

我想找到一种方法,在运行测试之前让测试知道游戏已加载到主菜单。

我尝试在两个应用程序上共享共享首选项,但由于使用 SDK 25 和某些模式被弃用而无法管理。

有人知道吗?我想过使用 sdcard 来保存某种文件,但时不时(我在模拟器上测试(SD卡不起作用(这是一个完全不同的问题(

首先,我强烈建议在真实设备上进行测试,我个人拥有20 +测试设备,除了一些高端型号外,它们的价格都低于20美元。体验和感觉是物有所值的,但最重要的是,我相信模拟器不能像生产模型那样做得好。

就您而言,我认为您需要某种跨应用程序通信才能开始测试?

  1. 您是否尝试过在 1 个应用程序中创建自己的 SQLite 数据库和内容提供程序,使其公开。然后拥有第二个应用程序内容解析程序并在第一个应用程序中访问数据。

  2. 创建一个有界的服务,将两个应用程序绑定到它,现在进程间通信可能而且非常容易,阅读数百万个文档中的任何一个,从这里开始

https://developer.android.com/guide/components/bound-services.html#Messenger

https://codexample.org/questions/57868/data-sharing-between-two-applications.c

我设法让双共享首选项使用以下代码

从应用程序 1发送数据(例如:应用程序 1 包名称为"com.sharedpref1"(。

SharedPreferences prefs = getSharedPreferences("demopref",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("demostring", strShareValue);
editor.commit();

在应用程序 2 中接收数据(从应用程序 1 中的共享首选项获取数据(。

try {
con = createPackageContext("com.sharedpref1", 0);//first app package name is "com.sharedpref1"
SharedPreferences pref = con.getSharedPreferences(
"demopref", Context.MODE_PRIVATE);
String your_data = pref.getString("demostring", "No Value");
} 
catch (NameNotFoundException e) {
Log.e("Not data shared", e.toString());
}

在两个应用程序清单文件中,添加相同的共享用户 ID 和标签,

android:sharedUserId="any string" 
android:sharedUserLabel="@string/any_string"

两者都是一样的...并且共享用户标签必须来自字符串.xml

就像这个例子。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xxxx"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="aaa.bbb.ccc" 
android:sharedUserLabel="@string/any_string">

当我只有一个单词时,我遇到了一个 sharedUserId 不起作用的小问题,显然它需要遵循包名样式格式(我找到的示例有 3 个部分,这对我第一次有用,所以我没有调查其他任何东西(

相关内容

  • 没有找到相关文章

最新更新