Tag: 安卓

一次多个权限不工作在Android

我正在尝试一次获得2个权限,但IAM无法这样做。 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(context, Array(2) { Manifest.permission.READ_CONTACTS; Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } } 它只要求WRITE_EXTERNAL_STORAGE权限而不是READ_CONTACTS 。 实际上,如果我先写入WRITE_EXTERNAL_STORAGE ,然后再写入READ_CONTACTS ,那么它只会请求联系而不是WRITE_EXTERNAL_STORAGE 。

getActionView已被弃用?

今天我决定把我的Android应用从Java转换到Kotlin! :)但是当我输入这个时,我感到非常惊讶: val searchItem = menu.findItem(R.id.action_search) val searchView = MenuItemCompat.getActionView(searchItem) as SearchView 而Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。在Java中已弃用“ 所以之前要问你我解决方案是什么解决方案,我相信我find解决方案:“直接使用getActionView()”。 所以我修改我的代码是这样的: val searchView = MenuItemCompat.getActionView() as SearchView 但getActionView()仍然交叉,所以我不明白… 我会很高兴,如果你能帮我:)谢谢!

错误:包含非法的最终字段-Kotlin

我正在使用带有Realm的Kotlin数据类,Gson注释用于从服务器获取数据。 问题:当我在android studio中运行项目时,会出现以下错误 Error:Class “VenderConfig” contains illegal final field “name”. 我正在学习Kotlin,所以对此没有太多的想法。 我的VenderConfig类是: @RealmClass class VenderConfig( @SerializedName(“name”) val name: String? = null, @SerializedName(“website”) val wb_url: String? = null, @SerializedName(“icon”) val icon: String? = null, @SerializedName(“logo”) val logo: String? = null, @SerializedName(“description”) val description: String? = null, @PrimaryKey @SerializedName(“id”) val id: Int? = null ) : RealmObject() […]

如何防止对话(警报)在您使用Anko触摸外部或后退时关闭

我正在用kotlin和anko创建一个警报/对话框(下面的代码),但是当你敲门或者按回来关闭它。 这是代码 alert(“TITLE”) { title(“Text”) positiveButton(“Ok”) { action() } }.show() 这里是如何解决方案将在Java(没有使用anko太) dialog.setCancelable(false); // for prevent on back pressed dialog.setCanceledOnTouchOutside(false); // for prevent on touching outside 任何想法如何使用kotlin和anko实现这一点? 谢谢 :)

使用Parcelable时,Kotlin编译错误

我正在尝试为我的课程实施Parcelable 。 Android Studio自动为我生成代码。 现在我的class级看起来像这样: @Parcelize data class BankCard(var owner: String, var number: String, var isDefaultCard: Boolean) : Parcelable { constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString(), parcel.readByte() != 0.toByte()) { } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(owner) parcel.writeString(number) parcel.writeByte(if (isDefaultCard) 1 else 0) } override fun describeContents(): Int { return 0 } companion […]

Android录像机:未能获得表面

您好我正在尝试使用相机v2 API来记录video使用Raspberry Pi 3设备,使用树莓派相机模块附加到它。 我正在用Kotlin使用Android Things开发这个function。 这是我的video录制代码的样子。 override fun startRecording(videoCameraCallback: VideoCameraCallback) { val cameraIdList = cameraManager.cameraIdList cameraManager.openCamera(cameraIdList[0], cameraStateCalback, null) Log.d(“JJJ”, “start recording called”) } var cameraStateCalback = object : CameraDevice.StateCallback() { override fun onOpened(camera: CameraDevice?) { if (camera != null) { Log.d(“JJJ”, “onOpened and will now create handler and capture session”) //create handler thread val […]

Android 6上的改造2设置了零路径参数

我正在使用Retrofit 2库版本2.3.0,并突然开始用零代替整数路径参数,而不是实际的数字。 我正在使用Kotlin(1.2.21),我有一个方法,如: @GET(“posts/{postId}”) fun getPosts(@Path(“postId”) postId: Long): Single 这工作应该,但现在当我在Android 6上运行我的应用程序(设备和模拟器) postId路径参数始终是零即调用posts/0 。 Android 7和8都很好。 Retrofit和OkHttp版本没有改变,界面也没有改变。 我已经查看了构建的请求,并且OkHttpCall里面有一个带有值为0的Longtypes的值的数组。这只是在Android 6上,其他人在那里有正确的值。 ServiceMethod在接口中设置了正确的URL,它有一个ParameterHandler用于BuiltInConverter.ToStringConvertertypes的postId 。 应用程序是multiDexed和ProGuard不使用。 会发生什么?

如何在RxJava2中错误地终止开关图的序列

我正试图在RxJava2和Kotlin中实现一个刷新令牌流,并且在处理错误时遇到了问题。 有几个请求需要按顺序完成,但是如果有一些错误,顺序会有所不同。 基本上,如果我尝试使用我的刷新令牌并接收400 – Bad Request响应,因为令牌无效,我需要终止流并且不执行下一个switchMap (理想情况下,我想返回最终的Observable )。 但我不知道如何做到这一点。 如果我使用onErrorReturn ,我只是将返回的结果传递给下一个切换映射。 而doOnError只是在请求失败的时候执行这个步骤,但是整个序列还在继续。 fun refreshToken(): Observable { // try to use the refresh token to obtain an access token return authRepository.refreshToken(token) .switchMap { response -> // process response here userRepository.getUser() // fetch user details }.doOnError { // TODO – return final result, do not jump to […]

android.hardware.camera2全部在手机上时,但在模拟器上非常黑暗

任何想法为什么模拟器的摄像头(通过笔记本电脑摄像头路由)将工作,但手机的相机会产生完美的黑色照片? 我一直试图得到一个Kotlin你好,世界android.hardware.camera2应用程序的工作,需要高品质的照片按夜间天空摄影的时间表。 这是我第一次进入Android编程,我第一次使用android.hardware.camera2,所以我猜我错过了一些愚蠢的东西。 笔记本电脑摄像头拍摄非常黑暗的照片,但是当您手动照亮照片时,可以告诉他们正在工作。 但是,在设备(Pixel)上运行时,图片是纯黑色的。 我以为我把所有东西都设置为全自动模式 ,等待一秒钟就可以让相机对焦,但也许我需要在预览开始后等待一秒钟? 我最好的猜测是,没有一个实时预览窗口是不寻常的,它是搞砸了。

如何在RxJava 2和Android中延迟onError()?

我试图从我的应用程序中的Web服务器加载一些数据。 而且由于操作的异步性,无法预先知道需要多长时间才能完成。 为了提醒用户操作“正在进行”,我正在使用一个加载指示器。 这是一个使用kotlin和RxJava 2(我希望很清楚): fun loadData(){ showLoader() // show loading indicator Single.fromCallable { // http request logic goes here }.delay(1000, TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(object : DisposableSingleObserver() { override fun onSuccess(data: String) { // do something hideLoader() // on success, hide indicator } override fun onError(e: Throwable) { displayErrorMessage() hideLoader() // on error hide indicator […]