小编bla*_*ara的帖子

PagedListAdapter.submitList()在更新现有项目时表现得很奇怪

这个主题的小故事:应用程序只是在确认后用对话框更新点击行的值.在房间数据库上使用分页方案.

添加或删除项目时,将获取最新数据集并将其传递给submitList方法,然后可以看到所有更改并运行良好.

问题从那里开始,如果现有项目更新,则再次正确获取最新数据集并传递给submitList,但这次似乎没有变化.

当我调试DIFF_CALLBACK并抓住我的项目时areItemsTheSame,newHistoryoldHistory值是一样的!(怎么样!)

submitList方法中可能有任何错误?

  • 房间v.:2.1.0-alpha02
  • Paging v.:2.1.0-beta01

初始化后,observe从房间中提取列表并传递给mHistoryAdapter.submitList(it).然后,如果我更新一个项目,观察再次被触发(我在param中看到更新的值it)并传递给submitList.

不幸的是,适配器不会改变......

    mResolvedAddressViewModel = ViewModelProviders.of(this).get(ResolvedAddressViewModel::class.java)
    mResolvedAddressViewModel.getAddresses(false).observe(this, Observer {
        mHistoryAdapter.submitList(it)
    })
Run Code Online (Sandbox Code Playgroud)

所有部件

模型

@Parcelize
@Entity
data class ResolvedAddress(
    @PrimaryKey var id: String = UUID.randomUUID().toString(),
    var requestedLat: Double = 0.0,
    var requestedLon: Double = 0.0,
    var requestedAddress: String = "",
    var lat: Double,
    var lon: Double,
    var address: String,
    var country: String,
    var countryCode: String,
    var city: …
Run Code Online (Sandbox Code Playgroud)

android android-architecture-components android-paging androidx

12
推荐指数
1
解决办法
2252
查看次数

一些应用程序(微信)如何忽略虚假位置然后检测真实位置?

我安装了一个虚假的位置应用程序,并设置我的位置不同.然后打开谷歌地图和微信应用,

  • 谷歌地图显示我的位置,我设置(假)
  • 微信应用程序忽略虚假位置并检测真实位置(如何?)

然后我想阻止微信分析我以前收到的真实位置和新假位置.

  • 卸载微信
  • 重启我的设备
  • 将我的位置设为假
  • 再次安装微信

但同样的结果,它检测到我的真实位置.

我真的很想了解他们是如何做到这一点的.有任何想法吗?


我试过的

  • Gps提供者恶搞
  • 网络提供商恶搞
  • 融合位置提供商恶搞
  • IP地理定位恶搞
  • Gps提供商恶搞+ IP地理定位恶搞

UPDATE

即使在禁用时也使用GPS.

在此输入图像描述

07-02 11:46:15.504 2346-2356 /?D/LocationManagerService:请求434a7e28 gps从com.tencent.mm请求[ACCURACY_FINE请求gps = + 1s0ms最快= + 1s0ms](10173)


结论

  • 您可以在较旧版本的微信上伪造位置(低于6.0)
  • 使用像BaiduLocationSDK这样的东西.它不受任何通过LocationManager和Fused提供程序的模拟尝试的影响.
  • 我不确定但是,好像百度位置SDK通过硬件级别使用GPS.

android location android-gps

10
推荐指数
1
解决办法
5万
查看次数

Android studio(2.2.0和2.2.1)向设备发送错误的ABI拆分

我在我的应用程序中使用ABI拆分

splits {
    abi {
        enable true
        reset()
        include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
        universalApk true
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用x86_64仿真器然后切换到设备(armeabi-v7a)(以及其他人),android studio将app-x86_64-debug.apk发送到设备

09/27 17:17:49: Launching app
$ adb push SampleFolder\app\build\outputs\apk\app-x86_64-debug.apk /data/local/tmp/sample.package
$ adb shell pm install -r "/data/local/tmp/sample.package"
pkg: /data/local/tmp/sample.package
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
Run Code Online (Sandbox Code Playgroud)

编辑:我如何得到这个问题的方式

  • 我关闭了x86_64仿真器
  • 连接真实测试设备
  • 跟随运行 - 编辑配置 - 目标(打开选择部署目标对话框)
  • 选择连接的测试设备

Android Studio 2.2.1

在发布2.2.1之后,我发挥了一点分裂,然后一切看起来都不错.不幸的是,我再次遇到同样的问题.为了确保清楚,我创建了新的android项目和导入的realm数据库(有本机库),然后,

将拆分部分添加到gradle

 splits {
    abi {
        enable true
        reset()
        include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
    }
}
Run Code Online (Sandbox Code Playgroud)

创建应用程序类

public class SampleApp extends Application {

    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-studio

10
推荐指数
1
解决办法
3040
查看次数

Android gps提供商和gps图标

今天,当我尝试使用我的代码时,脑子里出现了一些可疑的东西,关于gps提供程序,gps硬件,gps图标和精确的位置许可.

我在三星galaxy s3上看到了我的代码和gps图标,Htc是一个m8.并且gps已禁用

mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 10, 0, this, Looper.myLooper());
...
@Override
public void onLocationChanged(Location location) {
    mListenerRef.get().onLocationChanged(location);
}
Run Code Online (Sandbox Code Playgroud)

Galaxy s3 - Gps图标没有出现,它没有触发onLocationChanged方法.(没关系)

Htc一个m8 - Gps图标出现,闪烁,并点燃 onLocationChanged(但是怎么样?)

此时问题弹出

  • ACCESS_FINE_LOCATION权限是否允许应用在某些设备上覆盖gps状态?
  • 那么,应用程序是否可以接收位置甚至gps禁用?

然后我在galaxy s3上启用了gps

(前2分钟)Gps图标出现(但没有闪烁),触发onLocationChanged方法(但是如何?)

(2分钟后)Gps图标出现(闪烁),触发onLocationChanged方法

再次出现问题

  • gps图标闪烁是什么意思?任何外部意义?
  • 闪烁是否意味着gps硬件尝试首次修复?
  • 或者闪烁意味着提供者触发onLocationChanged方法?

gps android location

9
推荐指数
1
解决办法
1326
查看次数

我们如何多次调用 NativeBannerAd 的 loadAd 方法?

我只是想在我的应用程序中管理广告的失败情况。因此,onError由于某种原因(例如没有网络)触发后,我只是调用loadAdNativeBannerAd如下所示的方法。但应用程序因called more than once错误而崩溃。

 mFacebookNativeBannerAd = NativeBannerAd(context, id)
 val builder = mFacebookNativeBannerAd.buildLoadAdConfig()
 builder.withAdListener(object : NativeAdListener {
     // ...
     // Other callback methods
     override fun onError(p0: Ad?, error: AdError?) {
         mFacebookNativeBannerAd.loadAd() // --> 'called more than once' exception
     }
 })
 mFacebookNativeBannerAd.loadAd()
Run Code Online (Sandbox Code Playgroud)

我在文档上没有看到有关此异常的任何描述。NativeAd, NativeAdsManager,InterstitialAd对象适用于上述场景。但 NativeBannerAd 没有。

我怎样才能再次加载广告?

我使用的观众版本是 audience-network-sdk:5.6.1

android facebook-ads-api facebook-audience-network

9
推荐指数
1
解决办法
336
查看次数

如何正确使用ViewStub的Kotlin Android扩展?

扩展是否具有调用膨胀视图的魔力?据我所知,我应该打破代码和呼叫的和谐findViewById

目的是layout_ongoingView在某个时候使布局膨胀,并根据场景再次隐藏和显示

<ViewStub
    android:id="@+id/viewStubOngoing"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inflatedId="@+id/ongoingView"
    android:layout="@layout/layout_ongoingView" />
Run Code Online (Sandbox Code Playgroud)

和代码

override fun hideOngoingPanel() {
    if (viewStubOngoing !is ViewStub) {
        findViewById(R.id.ongoingView).visibility = View.GONE
    }
}

override fun showOngoingPanel() {
    if (viewStubOngoing !is ViewStub) {
        findViewById(R.id.ongoingView).visibility = View.VISIBLE
    } else {
        viewStubOngoing.inflate()
    }
}
Run Code Online (Sandbox Code Playgroud)

android viewstub kotlin-android-extensions

8
推荐指数
0
解决办法
559
查看次数

如何在OkHttp中为数据流编写重试拦截器?

或者认为此场景的拦截器适用?

我们的应用程序使用OkHttp下载文件(应用程序的新版本,每日数据库等)

有时服务器在app流式传输字节时失败(顺便说一下,问题是,recvfrom失败:ECONNRESET)

所以为了解决这个问题,我只想编写OkHttp重试拦截器.但似乎这适用于不流式传输的操作.

是否有解决方案(如拦截器)来处理这种情况?


要做更清楚的阐述

0%============================== 100%(刚开始流式传输)

0%=== ========================= 100%(已完成10%)

0%====== ======================== 100%(已完成20%)

0%====== ======================== 100%(ECONNRESET - 由同行重置连接)

就在这时,流媒体就停止了.我想从OkHttp那里得到的东西是认识到这种情况然后从头开始流(而不是20%)


相关代码在这里,注意评论

 Call call = client.newCall(new Request.Builder().url(url).get().build());
 Response response = call.execute();
 // PROBLEM DOES NOT OCCUR THERE
 // PROBLEM DOES NOT OCCUR THERE
 // PROBLEM DOES NOT OCCUR THERE
 if (response.code() == 200 || response.code() == 201) {
     InputStream inputStream = null;
     try {
         long downloaded = 0; …
Run Code Online (Sandbox Code Playgroud)

android econnreset okhttp okhttp3

8
推荐指数
1
解决办法
1408
查看次数

如何集成loopback第三方登录android

我的项目包括web和android客户端.我想结合Google跨平台登录和环回第三方登录.

在我的场景中,我永远不会要求用户名和密码.用户仅在网络和Android应用上使用Google登录按钮进行身份验证和授权.

让我们假设,这是您第一次通过我的网站登录Google登录.在环回第三方方案中,如果您不在db上,则会创建一个帐户对应的提供者和外部ID.(在这种情况下,提供商是谷歌和外部ID是您唯一的谷歌ID).这是针对web,loopback-example-passport

所以,假设上面的android场景.您只需点击Google登录按钮,然后环回服务器就可以执行以上操作(如网络)

这是否有内置的环回方式?如果没有,我如何正确地将此场景集成到环回中?

android strongloop loopbackjs

7
推荐指数
1
解决办法
1109
查看次数

如何设置Android模拟GPS位置?

描述

我在尝试使用 Android 模拟位置时遇到问题,我的主要目标是将 Android GPS 设置为认为我们处于不同的位置,又名假 GPS。

目前的尝试

我目前尝试了两种不同的类似解决方案,可在这两个网站上找到:

这两个教程都是 2012 年的,我不知道它们是否已经过时,或者我很难实施它们。

编码开发

首先我确保我有权限:

  1. ACCESS_COARSE_LOCATION
  2. ACCESS_FINE_LOCATION
  3. ACCESS_MOCK_LOCATION *

注意:1 和 2 都被检查,如果它们不可用,我使用requestPermissions函数请求许可。第三个是无法询问的,实际上只能在调试模式下通过AndroidManifest.xml添加。

我还确保在“设置”>“开发人员选项”>“允许模拟位置”中选择了我的应用程序。

毕竟,我已经尝试通过 OnCreate 方法或 OnClick 按钮调用这个函数:

public void mockLocation(){
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy( Criteria.ACCURACY_FINE );
    String mocLocationProvider = lm.getBestProvider( criteria, true );
    if ( mocLocationProvider == null ) {
        Toast.makeText(getApplicationContext(), "No location provider found!", Toast.LENGTH_SHORT).show();
        return;
    }
    lm.addTestProvider(mocLocationProvider, false, false,
            false, …
Run Code Online (Sandbox Code Playgroud)

java gps android android-studio

5
推荐指数
1
解决办法
2万
查看次数

如何选择一个应用程序,以允许在Marshmallow上以编程方式模拟位置?

在Marshmallow之前"允许模拟位置"选项可以通过编程方式更改(需要root)

Settings.Secure.putInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION, 1);
Run Code Online (Sandbox Code Playgroud)

但现在这个选项是特定于应用程序的,意味着您必须在开发人员选项中选择模拟器应用程序.

有没有办法以编程方式更改此设置(将我的应用程序插入允许列表)?

android android-settings android-6.0-marshmallow

5
推荐指数
1
解决办法
2314
查看次数