小编use*_*r25的帖子

膨胀类时出错 > com.google.android.material.switchmaterial.SwitchMaterial

SwitchMaterial所以我在一种布局中使用:

<com.google.android.material.switchmaterial.SwitchMaterial...
Run Code Online (Sandbox Code Playgroud)

Firebase Crashlytics 向我发送垃圾邮件,其中许多用户都收到以下错误

致命异常:java.lang.RuntimeException 无法启动活动 ComponentInfo{...}:android.view.InflateException:二进制 XML 文件行 #324:二进制 XML 文件行 #324:膨胀类 com.google.android.material 时出错。 switchmaterial.SwitchMaterial

由 android.content.res.Resources$NotFoundException 引起,来自可绘制资源 ID #0x7f080047 的文件 res/drawable/abc_switch_thumb_material.xml

应用主题:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">...
Run Code Online (Sandbox Code Playgroud)

材料部:

implementation "com.google.android.material:material:1.6.1"
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

更新

我尝试使用SwitchAndroidX AppCompat 库,但仍然存在与可绘制对象相同的问题:

Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo{****.ui.MainActivity}: android.view.InflateException: Binary XML file line #324: Binary XML file line #324: Error inflating class androidx.appcompat.widget.SwitchCompat

Caused by android.content.res.Resources$NotFoundException Drawable ***:drawable/abc_switch_thumb_material with resource ID #0x7f080047

这太奇怪了,虽然它在我的智能手机上运行良好,但它已经影响了我的 22 个用户

是的,我为发布版本启用了以下两个选项

minifyEnabled true
shrinkResources true
Run Code Online (Sandbox Code Playgroud)

但对于不同的应用程序来说,它一直工作得很好,而且我从来不需要向 …

android material-components-android

21
推荐指数
1
解决办法
2687
查看次数

如何使用ffmpeg从视频文件中删除一个曲目?

如何使用ffmpeg从视频文件容器(.vob或.mkv)中只删除一个轨道(不是全部)?

我知道我可以将视频(-c:v copy -an)和特定音轨从容器复制到两个独立的文件中然后加入它们.

但是有更简单的方法吗?我可以从容器中删除特定的音轨吗?ffmpeg命令?

video ffmpeg

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

Android Studio 不再记住“生成签名包或 APK”中的密码 (4.1)

本周我使用 Android Studio 构建了 3-4 次发布包,并且我总是选中“记住密码”。

但是每次我进行新版本构建时,它都会要求输入密码,因此忽略“记住密码”,只记住“密钥存储路径”和“密钥别名”字段。

前段时间还可以用,但现在不行了。4.1 版中的 Mb 错误,我不知道。

有人有这个问题吗?能解决吗?

在此处输入图片说明

更新它会重置所有项目的密码,并仅保留用于构建发布包/apk 的最后一个项目

android-studio android-studio-4.1

13
推荐指数
0
解决办法
259
查看次数

如何禁用 Android Studio 更新通知?

我不想更新到 2.3(他们破坏了 4.4.4 设备的Instant Run,现在它只适用于 5.* 及更高版本)

只想隐藏通知:

在此处输入图片说明

android-studio

8
推荐指数
2
解决办法
5203
查看次数

MediaRecorder 和 VideoSource.SURFACE,停止失败:-1007(一个严重的 Android 错误)

我正在尝试MediaRecorder不使用Camera实例而是使用Surface视频源进行录制(是的,这是可能的,但事实证明它并不完美)-mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);

我只写什么问题:

下一个代码仅适用于某些设备,并在最近的设备重新启动后在某些设备上临时工作或根本不起作用

如果它不起作用 okMediaRecorder.stop()方法失败并出现下一个错误

E/MediaRecorder:停止失败:-1007 W/System.err:

java.lang.RuntimeException:停止失败。在

android.media.MediaRecorder.stop(本机方法)

录音机 mp4 文件太小(千字节),无法播放

测试设备:

适用于联想 P2、小米 A1

不适用于小米红米 5、索尼 Xperia、小米红米 4 Prime

您也可以阅读我的代码中的注释以更好地理解问题

new Thread(() -> {

    MediaRecorder mediaRecorder = new MediaRecorder();

    File file = new File(Environment.getExternalStorageDirectory()
            + File.separator + "test_media_recorder_surface_source.mp4");
    if (file.exists()) {
        file.delete();
    }

    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setOutputFile(file.getAbsolutePath());
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
    mediaRecorder.setVideoSize(1280, 720);
    mediaRecorder.setCaptureRate(24);

    try {
        mediaRecorder.prepare();

        int sleepTime = 1000 / 24;

        Surface surface = mediaRecorder.getSurface();

        mediaRecorder.start();

        // record something (we can …
Run Code Online (Sandbox Code Playgroud)

android surface android-canvas mediarecorder android-mediarecorder

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

如果没有弃用的singleLine ="true",marquee将无法工作?

Marquee仅适用于已弃用singleLine:

<TextView
            ...
            android:ellipsize="marquee"
            android:singleLine="true"
            android:marqueeRepeatLimit="marquee_forever"/>
Run Code Online (Sandbox Code Playgroud)

并且不适用于maxLines= 1:

<TextView
            ...
            android:ellipsize="marquee"
            android:maxLines="1"
            android:marqueeRepeatLimit="marquee_forever"/>
Run Code Online (Sandbox Code Playgroud)

并且总是使用mTextView.setSelected(true);当然

android

6
推荐指数
0
解决办法
390
查看次数

您的 APK 应包含用于常见平板电脑屏幕密度的自定义可绘制资源

Google 控制台说我的应用没有针对平板电脑进行优化

为平板电脑设计应用

您的正式版 APK 需要满足以下条件:

您的 APK 应包含用于常见平板电脑屏幕密度的自定义可绘制资源

我的res文件夹我有下一个可绘制的文件夹:

drawable
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
Run Code Online (Sandbox Code Playgroud)

drawable文件夹包含 76 个 PNG 和 48 个 XML drawable-hdpi , drawable-xhdpi , drawable-xxhdpi , drawable-xxxhdpi文件夹包含 76 个 PNG 但大小(宽 x 高)不同

android google-console-developer

5
推荐指数
0
解决办法
460
查看次数

如何在没有系统确认对话框的情况下删除 Android 11 (API 30) 上的文件?

我有一个将视频录制到共享 MOVIES 文件夹的应用程序。

我可以使用contentResolver.delete(uri, null, null)我录制的视频活动中的方法删除 Android 11 (API 30) 上的这些文件。

但是,如果我重新安装该应用程序,那么它就会失去对这些文件的权限......(如此糟糕),在这种情况下,我需要做这样的事情:

try {
    context.contentResolver.delete(uri, null, null)
} catch (exception: Exception) {
    if (exception is RecoverableSecurityException) {
        val intentSender = exception.userAction.actionIntent.intentSender
        intentSender?.let {
            callback?.startIntentSenderForResult(
                intentSender,
                requestCode
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此它无法删除文件,ContentResolver因为应用程序已重新安装,并且有一个例外,我们可以捕获并打开下一个烦人的对话框以供用户确认删除(并且对于每个文件删除,它应该是一个不同的对话框,多次删除 - 否道路)

在此处输入图片说明

然后我在这个 Android 11 设备(模拟器)上安装了来自 Google Play 的 Explorer 应用程序,当我打开它时,该应用程序只要求存储写入权限(我的应用程序也这样做)并且这个 Explorer 应用程序可以轻松删除任何文件(包括我录制的视频)文件)没有任何确认对话框。

那么他们是如何做到的呢?这是一个黑客还是什么?

链接到应用程序https://play.google.com/store/apps/details?id=com.speedsoftware.explorer

更新

VLC for Android 也可以删除任何媒体文件https://play.google.com/store/apps/details?id=org.videolan.vlc

他们也使用内容提供程序,所以它是一样的,但它返回的true不像我的应用程序,为什么?

fun deleteFile(file: File): Boolean {
    var deleted: Boolean
    //Delete from …
Run Code Online (Sandbox Code Playgroud)

android android-file android-storage android-11

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

UILabel.attributedText 设置属性一次,然后仅更改文本(字符串)

如何仅设置 UILabel 文本属性一次,然后仅更改文本(字符串)

mTextValue.attributedText = NSAttributedString(string: "STRING", 
       attributes: 
           [NSAttributedStringKey.strokeWidth: -3.0,      
            NSAttributedStringKey.strokeColor: UIColor.black])


mTextValue.text = "NEW STRING" // won't change anything
Run Code Online (Sandbox Code Playgroud)

或者要设置新字符串,我必须一次又一次地NSAttributedString设置吗?.attributedText

nsattributedstring uilabel ios swift

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

检查项目是否已经在上下文菜单中

不久前,我可以在 Google Chrome 扩展程序中为上下文菜单保存创建项目的 ID:

背景.js:

var myItem;

if (myItem !== "MyItem") {
    myItem = chrome.contextMenus.create({
        title: "My item",
        id: 'MyItem',
        contexts: ["page"]
    });
}
Run Code Online (Sandbox Code Playgroud)

但是现在当我首先打开 Chrome 时,它​​说:

运行 contextMenus.create 时未选中的 runtime.lastError:无法创建具有重复 id MyItem 的项目

(来自调试控制台)

所以当我关闭 Chrome 时,它​​不再记得我的变量“myItem”(它的数据)。它只在 Chrome 打开时记住。

那么现在我应该使用chrome.storage.local.get还是set保存我的上下文菜单项的 ID?

更新:

问题是"persistent": false背景清单中的一个:

   "background": {
      "scripts": [ "background.js" ]
   },
Run Code Online (Sandbox Code Playgroud)

已删除,现在可以正常使用[已解决]

javascript google-chrome-extension

3
推荐指数
2
解决办法
2997
查看次数