小编Jor*_*oza的帖子

kotlin 迁移后 Crashitycs 报告错误的行号

Crashlytics 报告在将应用程序迁移到 kotlin 后显示错误的行号,我已经-keepattributes SourceFile,LineNumberTable在我的 proguard 文件中

错误行号报告示例:

http://crashes.to/s/419b5b28766

android kotlin crashlytics google-fabric

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

来自文件提供程序Uri的Android 7.0通知声音无法播放

我正在更改我的应用程序代码以支持Android 7,但在我的NotificationCompat.Builder.setSound(Uri)中传递来自FileProvider的Uri,Notification不播放任何声音,在Android 6中使用Uri.fromFile()正常工作.

mp3文件位于:

/Animeflv/cache/.sounds/

这是我的通知代码:

knf.animeflv.RequestBackground

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_not_r)
.setContentTitle(NotTit)
.setContentText(mess);
...
mBuilder.setVibrate(new long[]{100, 200, 100, 500});
mBuilder.setSound(UtilSound.getSoundUri(not)); //int
Run Code Online (Sandbox Code Playgroud)

这是我的UtilSound.getSoundUri(int)

public static Uri getSoundUri(int not) {
        switch (not) {
            case 0:
                return RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            default:
                try {
                    File file=new File(Environment.getExternalStorageDirectory()+"/Animeflv/cache/.sounds",getSoundsFileName(not));
                    if (file.exists()) {
                        file.setReadable(true,false);
                        if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
                            return FileProvider.getUriForFile(context, "knf.animeflv.RequestsBackground",file);
                        }else {
                            return Uri.fromFile(file);
                        }
                    }else {
                        Log.d("Sound Uri","Not found");
                        return getSoundUri(0);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                    return getSoundUri(0);
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="knf.animeflv.RequestsBackground"
    android:exported="false"
    android:grantUriPermissions="true"> …
Run Code Online (Sandbox Code Playgroud)

java android android-studio android-fileprovider android-7.0-nougat

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

在某些设备中使用分页获取 IndexOutOfBoundsException 的房间实时数据

我正在使用带有 Room livedata 的分页库,在某些设备中,有时我会收到 IndexOutOfBoundsException 索引越界 - 传递位置 = 75,旧列表大小 = 75(总是大小为 75,我的数据库都没有固定大小为 75)

问题是日志显示的更像是内部错误而不是我的应用程序错误

致命异常:java.lang.IndexOutOfBoundsException:索引越界 - 传递位置 = 75,旧列表大小 = 75

在androidx.recyclerview.widget.DiffUtil $ DiffResult.convertOldPositionToNew(DiffUtil.java:672)
在androidx.paging.PagedStorageDiffHelper.transformAnchorIndex(PagedStorageDiffHelper.java:215)
在androidx.paging.AsyncPagedListDiffer.latchPagedList(AsyncPagedListDiffer.java:382)
在androidx.paging.AsyncPagedListDiffer$2$1.run(AsyncPagedListDiffer.java:345)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os .Looper.loop(Looper.java:164)
在 android.app.ActivityThread.main(ActivityThread.java:6543)
在 java.lang.reflect.Method.invoke(Method.java)
在 com.android.internal.os。 RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)

有解决方法吗?还是与我的应用程序有关?

android kotlin android-room android-paging

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

Jetpack Compose Vertical Grid 单项跨度大小

在 xml 中,您可以使用 GridLayoutManager 中的 GridLayoutManager.SpanSizeLookup 来设置单个项目的跨度大小(该项目将在行中使用多少列,例如,在 3 列的网格中,我可以将第一个项目设置为跨度大小3 所以它将使用网格的所有宽度),但在 Compose 中我找不到方法来做到这一点,垂直网格只有一种方法设置全局跨度计数和添加项目,但不能设置跨度大小一个单独的项目,有办法做到吗?

android android-jetpack-compose android-jetpack-compose-list

4
推荐指数
1
解决办法
3854
查看次数