我有一个与远程android服务交互的小应用程序.我想在单元测试中模拟该服务.我使用Robolectric和JUnit其他测试用例和阴影,但我无法想象如何处理远程服务.
是否足以使用相同的包创建和启动测试服务,使用相同的实际服务和导出方法aidl?
由于我没有该服务的代码,我认为我不能使用需要实际类Robolectric的ShadowService.
非常感谢.
我想在我的Android应用程序中被动地扫描BLE广告客户.
但我找不到如何做到这一点.
根据蓝牙4.0核心规范,存在被动扫描模式.
第6卷:核心系统包[低能量控制器音量],
D部分:4.1被动扫描
https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=282159
"设备可以使用被动扫描查找广告该地区的设备."
而且,android有确定扫描类型的参数.(主动/被动)
http://androidxref.com/4.3_r2.1/xref/external/bluetooth/bluedroid/stack/btm/btm_ble_gap.c#555
"scan_type:主动扫描或被动扫描"
同时,iOS可以被动地扫描广告客户.(遗憾的是,仅限后台模式)
http://lists.apple.com/archives/bluetooth-dev/2012/May/msg00041.html
"当应用程序处于后台时,iOS会执行被动扫描."
但我无法找到是否可以使用被动扫描模式.
问题:是否可以在Android上使用"PASSIVE SCAN"?如果可能,如何使用此功能?
我正在尝试使用LoaderCallBacks从数据库加载数据。但是不会调用loadercallbacks中的onLoadFinished函数。因此,您可以在日志中看到返回的行数为1,但是列表中没有显示任何条目,因此您也可以看到未调用onLoadFinished。
SerieFragment
公共类SerieFragment扩展了SherlockListFragment实现
LoaderCallbacks {
私有SimpleCursorAdapter适配器;
@Override
公共无效onCreate(捆绑保存的InstanceState){
super.onCreate(savedInstanceState);
String [] from = new String [] {DBContract.Episodes.NAME};
int [] to = new int [] {R.id.name};
Log.i(“ LoaderManager”,“正在启动...”);
getLoaderManager()。initLoader(0,null,this);
adapter = new SimpleCursorAdapter(getActivity(),
R.layout.serie_list_item,null,从,到0);
this.setListAdapter(adapter);
}
@Override
public void onViewCreated(View view,Bundle savedInstanceState)捆绑{
}
@Override
公共加载程序onCreateLoader(int id,Bundle args){
Log.i(“ LoaderManager”,“正在创建加载程序...”);
String [] projection = {DBContract.Episodes._ID,
DBContract.Episodes.NAME};
CursorLoader cursorLoader = new CursorLoader(this.getActivity(),
Uri.parse(SerieProvider.CONTENT_URI +“ / episodes”),投影,
null,null,null);
返回cursorLoader;
}
@Override
public void onLoadFinished(加载程序加载程序,游标光标){
Log.i(“ LoaderManager”,
“完成的加载项...-光标:” + cursor.getCount());
adapter.swapCursor(cursor);
}
@Override
public void … Jetpack Compose 中的可点击修饰符似乎无法在鼠标输入的情况下区分按钮类型
您知道如何管理这个用例吗?
我需要检查该应用程序是通过 apk 还是从 google play 安装的。
我有一个从 google play 下载的 apk,而且该应用程序也可以在 google play 上使用。我想分两种情况。
我已经在下面读到过这个问题,但它是关于应用程序是由哪个应用程序商店安装的,这不是我想要的。
Android 包管理器如何知道要从市场网站安装什么?
有没有什么方法可以通过应用程序本身以编程方式检查应用程序是否由 apk 安装?任何帮助将不胜感激。
不能从 Activity 使用“by viewModel”
我想为一个 Activity 注入一个 ViewModel,所以我尝试了这个。但它失败了,Android Studio 找不到它的参考。
private val mainViewModel: MainViewModel by viewModel()
Run Code Online (Sandbox Code Playgroud)
我的活动 extendsAppCompatActivity和 gradle 依赖项包括这些库:
implementation 'androidx.core:core-ktx:1.3.2'
def koin_version = '2.2.1'
implementation "org.koin:koin-android:$koin_version"
implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
implementation "org.koin:koin-androidx-fragment:$koin_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$koin_version"
Run Code Online (Sandbox Code Playgroud)
我试过的:
下面的代码正在运行,但我想使用 Koin 2.2.0 的新默认“SavedStateHandle”功能。
private val mainViewModel: MainViewModel by inject()
Run Code Online (Sandbox Code Playgroud)
我发现此代码已包含在内,Android Studio 找不到它。
ActivityExt.kt:
inline fun <reified T : ViewModel> ComponentActivity.viewModel(
qualifier: Qualifier? = null,
noinline state: BundleDefinition? = null,
noinline owner: ViewModelOwnerDefinition = { from(this, this) },
noinline parameters: ParametersDefinition? …Run Code Online (Sandbox Code Playgroud) 我有一个未通过Google Play商店部署的应用。
它具有自己的APK文件服务器,并且以前没有“更新”功能。由于它是专用应用程序,因此需要更新应用程序的用户只需要卸载当前应用程序并安装新应用程序即可。
现在,我需要通过Google Play更新这些已安装的应用程序。
问题是: 我可以通过Google Play商店更新通过APK文件安装的应用吗?
测试环境:
我试过了:
1)建立三个测试APK版本1、2、3。
2)部署版本2并通过Google Play商店更新版本3。
3)[FAILED]通过ADB 安装APK 版本1,并且无法通过Google Play商店更新。(在我的测试应用的Google Play页面中,我可以看到“取消安装/打开”按钮
这正是我想要做的。
4)[FAILED]通过ADB 安装APK 版本2,无法通过Google Play商店更新。(在我的测试应用的Google Play页面中,我可以看到“取消安装/打开”按钮
我的一些同事说这种情况是可能的,但我没有做到。
我发现签名的APK与Google Play提取的APK之间的区别。通过二进制比较,许多文件是不同的。
特别是AndroidManifest.xml,此信息已添加到Google Play提取的apk中。
<meta-data
android:name="com.android.vending.derived.apk.id"
android:value="1" />
Run Code Online (Sandbox Code Playgroud)
可以更新从Google Play发行页面下载的旧版本apk。
我在下面找到了答案,但是对于我来说似乎不起作用。
当更新可用时,手动安装的apk(不是从Play商店)会收到通知吗?
仅在满足以下两个条件的情况下,您才会收到更新/在Google Play“已安装的应用”标签中查看该应用:
APK套件名称与上传到Google Play的名称相同
用于在Play商店中对应用进行签名的密钥库与用于释放您手动安装的APK的密钥库相同。
android ×7
google-play ×2
installation ×1
java ×1
koin ×1
kotlin ×1
network-scan ×1
robolectric ×1
sqlite ×1