Questions tagged «android»

Android是Google的移动操作系统,用于对数字设备(智能手机,平板电脑,汽车,电视,Wear,Glass和IoT)进行编程或开发。对于与Android相关的主题,请使用特定于Android的标签,例如android-intent,android-activity,android-adapter等。对于与开发或编程无关但与Android框架相关的问题,请使用以下链接:https:// android.stackexchange.com。

1
Navigation Arch Component会造成假阳性内存泄漏吗?
我对内存泄漏以及可能导致它们的原因有基本的了解。这就是为什么我不明白我的代码中是否有问题还是误报的原因。我不知道我应该共享代码的哪一部分,因为该项目并不小。但是,请在评论中让我知道,然后我将添加所需的代码。 我使用导航拱形组件并遵循MVVM模式。我在项目开发的后期添加了LeakCanary库,当我在屏幕之间导航时,它立即开始向我发出有关保留实例的警告。 当我将片段添加到后堆栈时,会发生问题。随着向后堆栈中添加的每个片段,保留实例的计数器增加。当达到阈值5时,LeakCanary将转储堆并提供报告。 但是,如果我单击“后退”按钮并返回到先前的屏幕,则保留实例的计数器减少,最终,当返回到第一个屏幕时,所有保留的实例都会消失。 如果我查看堆分析报告,它表示变量coordinatorLayout是CoordinatorLayoutxml中的引用。如果删除该变量及其所有用法,然后再次运行该应用程序,我会看到相同的问题,但是现在有了另一个变量,该变量引用了xml中的另一个视图。我试图删除LeakCanary报告为泄漏的所有视图及其用法。当它说a TextView只是用于设置文本onViewCreated而不在其他地方使用时,正在泄漏,我开始怀疑我的代码是否有问题。 我分析了片段中的生命周期方法调用,并注意到当我导航到先前片段的新屏幕时,直到(包括)所有方法onDestroyView都被调用,但没有被调用onDestroy。当我单击返回时,onDestroy将调用位于后堆栈顶部和保留实例顶部的片段,计数器会减少。 我怀疑导航组件在返回堆栈中时会保留片段的实例,而LeakCanary却将其视为泄漏。


6
Android-如何禁用底部工作表的STATE_HALF_EXPANDED状态
我有一个底层应该2个状态之间去,STATE_COLLAPSED并且STATE_EXPANDED 当它崩溃了HIGHT应该是200dp,展开的时候它会全屏显示。 所以我设置BottomSheetBehavior与 isFitToContents = false peekHeight = 200dp 并且我被迫在其中设置一个值,halfExpandedRatio否则在STATE_HALF_EXPANDED底部工作表将占据屏幕的一半。 我正在上班 com.google.android.material:material:1.1.0-rc01 有禁用STATE_HALF_EXPANDED状态的方法吗? 或者我应该实际设置skipCollapsed=true,在比什么200dp手段和工作用的方面找出STATE_HALF_EXPANDED和STATE_EXPANDED代替STATE_COLLAPSED和STATE_EXPANDED

4
Catalina升级后,由于新的安全性,无法使用旧的NDK(android-ndk-r17c)
升级到macOS Catalina后,我的项目将不再构建。这是由于Catalina认为'android-ndk-r17c'中的二进制文件不是来自受信任的开发人员。 您会收到以下消息:““ ld”无法打开,因为无法验证开发人员。” “ macOS无法验证此应用程序没有恶意软件” 由于本机openCV库SDK和较新的NDK出现问题,我不得不使用旧的NDK。他们正在努力,但是较新的SDK对我来说还不够稳定。 通过转到安全窗格并在安全警报上单击“仍然允许”,我可以解决“ clang”和“ clang ++”无法工作的问题。但是,当使用“ Id”尝试此操作时,我可以通过单击“仍然允许”来跳过第一个警告,但它似乎随后被调用,而在随后的调用中,我没有允许它打开的选项。 确实没有代码。我只是(并且已经有很长时间了)通过配置指向旧NDK的Android Studio NDK参考。 在NDK的IDE中,它无法加载“ Id”: ““ ld”无法打开,因为无法验证开发人员。” “ macOS无法验证此应用程序没有恶意软件”

1
我的Android应用程序覆盖了Lyft应用程序?
我构建了一个Android应用程序,该应用程序以某种方式接管或覆盖了Lyft驱动程序应用程序。基本上,只要用户下载了我的Android应用程序,它就会以某种方式接管她的Lyft应用程序。她不会收到Lyft的任何乘车请求(即使是在非常忙碌的时间中间)。然后,当她删除我的应用程序时,它再次正常运行。她立即​​再次乘车。这是我见过的最奇怪的事情。这不仅仅是偶然的,当她去杀死她的应用程序时,它确实显示了我的应用程序徽标接管了Lyft驱动程序应用程序。请注意,它最初具有Lyft徽标。然后,在安装我的应用程序时,它会带有Lyft应用程序的徽标(我的徽标只是默认的Android徽标)。她甚至可以杀死我的应用,而她的Lyft和Uber驱动程序也无法使用!修复它的唯一方法是完全卸载我的应用程序并重新启动她的手机。然后,一切正常。一个重要因素是我一直在跟踪位置。我只是不确定该从哪里开始,所以任何想法都对您有所帮助。谢谢!该用户在Android 10上使用了Galaxy Note 10+。我们的其他Android用户都没有告诉我们这个问题。这似乎是这款手机的独特案例。 这是我所有的清单和意图: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.danieljones.nomad_drivers"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/> <application android:requestLegacyExternalStorage="true" android:name=".parse.Parse" android:allowBackup="true" android:fullBackupContent="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".checkIn.CheckInActivity" android:label="@string/title_activity_check_in"/> <activity android:name=".insurance.analysis_activity.ZendriveAnalysisActivity" /> <activity android:name=".fare.breakdowns.FareBreakdownActivity" /> <activity android:name=".navigation.HomeNavigationActivity" android:label="@string/title_activity_home_navigation" android:screenOrientation="portrait"/> <activity android:name=".welcome.LoginActivity" /> <activity android:name=".welcome.special_code.CodeActivity"> <intent-filter> <action …
13 android 

7
如何解决不支持的渲染问题Path.op()?
如何解决此错误:渲染问题不支持Path.op() 我试图强制刷新布局,重新启动,更新Android Studio,暂时停止防病毒,但是问题仍然存在。 出乎意料的是,我能够编译并运行该应用程序,但是如何摆脱此错误? 我在用: Android Studio 3.5.3 Android SDK工具29.0.2 Android SDK平台Android 10.0(Q)Android SDK平台29 默认的OpenJDK平台二进制文件 重现错误: 创建空活动的新Android项目 用以下布局替换布局: <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/parent_view" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="@android:color/white"> <com.google.android.material.appbar.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/toolbar" /> </com.google.android.material.appbar.AppBarLayout> <androidx.core.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:scrollbars="none" android:scrollingCache="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> …

1
Android Q:范围存储中的SQLite数据库
在Android Q中引入了新的范围存储功能,该功能表示: 默认情况下,面向Android 10(API级别29)及更高版本的应用会获得对外部存储(或范围存储)的范围内访问权限。此类应用程序只能访问外部存储上特定于应用程序的目录以及该应用程序创建的特定媒体类型。 我有我的应用程序在外部存储上创建SQLite数据库,这样,当应用程序卸载数据库时,该数据库仍然有效,以后可以用作恢复功能,也可以在Android设备之外使用(例如在PC中) 如何使用Android Q达到相同的效果?更准确地说,如果数据库存储在外部公共目录中,如何使用标准读取此数据库SQLiteOpenHelper?

3
开放式简历人脸识别不准确
在我的应用程序中,我尝试使用Open CV在特定图像上进行人脸识别,这里我首先训练一个图像,然后在训练该图像后,如果我在该图像上进行人脸识别,则它成功地识别出该训练过的人脸。但是,当我转向同一个人的另一张照片时,识别不起作用。它仅适用于经过训练的图像,所以我的问题是如何纠正它? 更新:我要做的是用户应该从存储中选择一个人的图像,然后在训练了所选图像之后,我想从存储中获取与我训练过的图像相匹配的所有图像。 这是我的活动课: public class MainActivity extends AppCompatActivity { private Mat rgba,gray; private CascadeClassifier classifier; private MatOfRect faces; private ArrayList<Mat> images; private ArrayList<String> imagesLabels; private Storage local; ImageView mimage; Button prev,next; ArrayList<Integer> imgs; private int label[] = new int[1]; private double predict[] = new double[1]; Integer pos = 0; …

3
Google Play商店安全警报说您的应用程序包含漏洞JavaScript库,如何删除安全警告?
在Google Play商店中,这样的警告如下: 您的应用包含一个或多个存在已知安全问题的库。有关详细信息,请参阅此Google帮助中心文章。 脆弱的JavaScript库: 名称-> jquery 版本-> 3.3.1 已知问题-> SNYK-JS-JQUERY-174006 识别的文件-> res / raw / jquery_min.js 注意:在我的应用程序中加载webview时,我将在webview url中访问InterceptRequest并从原始文件夹资源中加载本地jquery_min.js文件,由于此功能,该功能可帮助我们更快地加载网页,而且我每月可从服务器节省5 GB的下载量。 示例WebView程序 LoadLocalScripts localScripts=new LoadLocalScripts(this); webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { return true; } //Show loader on url load public void onLoadResource(WebView view, String url) { } public …


5
应用内更新提供InstallException(ERROR_API_NOT_AVAILABLE)
使用以下代码段实现了应用内更新功能: private void showInAppUpdateDialog(boolean isMandatoryUpdate) { Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo(); appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> { if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE || appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) { int appUpdateType = isMandatoryUpdate ? IMMEDIATE : AppUpdateType.FLEXIBLE; int requestCode = isMandatoryUpdate ? REQUEST_APP_UPDATE_IMMEDIATE : REQUEST_APP_UPDATE_FLEXIBLE; if (appUpdateInfo.isUpdateTypeAllowed(appUpdateType)) { // start the app update try { appUpdateManager.startUpdateFlowForResult(appUpdateInfo, appUpdateType, …

1
什么是ViewModelStore和viewModelStoreOwner?
由于这个新的ViewModelProvider api,我非常困惑(不推荐使用ViewModelProviders) 与新更改一样,也有新的构造函数(源代码)。 #1 public ViewModelProvider(@NonNull ViewModelStoreOwner owner) { this(owner.getViewModelStore(), owner instanceof HasDefaultViewModelProviderFactory ? ((HasDefaultViewModelProviderFactory) owner).getDefaultViewModelProviderFactory() : NewInstanceFactory.getInstance()); } #2 public ViewModelProvider(@NonNull ViewModelStoreOwner owner, @NonNull Factory factory) { this(owner.getViewModelStore(), factory); } #3 public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory factory) { mFactory = factory; mViewModelStore = store; } 摇篮依赖度: implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-rc02" …

2
Moshi 1.9.1无法序列化Kotlin类型
我有使用Moshi 1.8.0进行数据序列化/反序列化的工作代码 现在,升级到1.9.1会导致尝试序列化时崩溃: java.lang.IllegalArgumentException:无法序列化Kotlin类型com.xxx.Spot。不使用kotlin-reflect的Kotlin类的反射序列化具有未定义和意外的行为。请使用来自moshi-kotlin工件的KotlinJsonAdapter或使用来自moshi-kotlin-codegen工件的代码gen。 这是序列化器代码: val moshi = Moshi.Builder().build() val dataListType = newParameterizedType(List::class.java, T::class.java) val adapter: JsonAdapter<List<T>> = moshi.adapter(dataListType) val json = adapter.toJson(dataList) 相应的T类是 @IgnoreExtraProperties data class Spot( var id: String = "", var localizedName: String? = null, var type: String = "", var location: Location? = null ) 我完全不知道在这里做什么。 …
12 android  kotlin  moshi 

2
非法的类文件:类module-info缺少超级类型。类文件版本53
当我在我的项目中添加firebase perf依赖项时,出现此错误Illegal class file: Class module-info is missing a super type. Class file version 53. My Gradle和google services项目级依赖项是 classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.3.2' 我按照他们的文档https://firebase.google.com/docs/perf-mon/get-started-android中提到的确切步骤进行操作。 我尝试清理并重建并清除Android Studio缓存。 并且还尝试了类似的StackOverflow问题解决方案 项目级构建gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() maven { url …

1
以编程方式测试是否在Android 10+中禁用了旧版外部存储访问
是否有一个简单的API调用可以告诉我在Android 10或更高版本上运行的应用程序是否必须使用范围存储访问权限,即是否禁用了常规文件访问(又称为“旧版外部存储”)?请注意,即使AndroidManifest.xml中的应用程序也声明了: android:requestLegacyExternalStorage="true" 由于将来Google的政策更改,文件访问仍可能会被拒绝,因此测试该值是没有用的。我发现的唯一方法是测试外部存储根目录是否可读,为此,应用程序必须首先请求存储许可,如果禁用了旧存储,则该存储对其他任何东西都没有用。 public static boolean mustUseScopedStorage() { // Impractical must first ask for useless Storage permission... File exSD = Environment.getExternalStorageDirectory(); return !exSD.canRead(); // this test works only if Storage permission was granted. } 我想我曾经看过一种新的API可以检测到这一点,但是现在找不到该文章了...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.