我在使用 API33 的 Android Studio 中遇到了奇怪的行为。在下面的代码中,
Intent chooser = Intent.createChooser(sharingIntent, filename);
List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(chooser, android.content.pm.PackageManager.MATCH_DEFAULT_ONLY);
Run Code Online (Sandbox Code Playgroud)
我正进入(状态queryIntentActivities(Intent,int) in PackageManager has been deprecated。
在文档中,它说:此方法在 API 级别 33 中已弃用。 Use queryIntentActivities(android.content.Intent, android.content.pm.PackageManager.ResolveInfoFlags) instead.
我尝试Intent用进行更改android.content.Intent,但遇到了同样的问题。PackageManager.MATCH_DEFAULT_ONLY是可能的标志值之一,所以我不明白这个错误试图告诉我什么......
每次我需要在 Android studio 中进行升级时,我都会遇到问题。这是最后一个(gradle 8.1.0,SDK 33,目标和编译版本为 33,全部安装并工作正常)。
检查现在给我
不针对最新版本的 Android
然后我将 和 都更改targetSdkVersion为compileSdk34,然后说(在检查中出现 gradle 错误之后):
看起来您刚刚在编辑器中将 targetSdkVersion 从 33 编辑为 34。请务必查阅有关由此导致的行为变化的文档。Android SDK 升级助手可以帮助安全迁移。
然后我运行 Android SDK Upgrade Assistant,并没有提及升级到 34。
尽管如此,我的项目还是以目标 34 构建。然而,Build 告诉我:
强烈建议您更新项目以使用已使用compileSdk = 34进行测试的较新的Android Gradle插件。
然后我尝试通过运行来升级 gradle,AGP upgrade assistant它说 gradle 8.1 是最新的,尽管事实上已经有 gradle 8.2.1。
以高效的方式使用 Android Studio 是相当困难的。
我究竟做错了什么?我该如何处理所有这些不一致的情况?我是否应该等待软件在检查之外警告我某些更新?
编辑
第二个问题,即使是 33:
检查给我:
比 1.7.0-alpha02 更新的 androidx.appcompat:appcompat 版本可用:1.7.0-alpha03
我更改为 alpha03,尝试构建,然后失败:
依赖项“androidx.appcompat:appcompat-resources:1.7.0-alpha03”需要依赖它的库和应用程序针对版本 34 或更高版本的 Android API 进行编译。
但它不允许我升级到 34...我发现的唯一解决方案是保留旧的 alpha02 并忽略检查。
我在 Android logcats 中看到大量以下形式的警告
W/libEGL: EGLNativeWindowType 0x72543469d0 disconnect failed
Run Code Online (Sandbox Code Playgroud)
无需进一步解释。为什么是这样?谷歌上没有找到任何有用的东西。Android 11 设备。不幸的是,我无法提供更多细节。
10:42:46.662 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: release : mNativeObject = 486206861488 - Surface(name=Surface(name=be52245 StatusBar)/@0x1380023 - animation-leash)/@0x9c54a2e
10:42:46.662 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: nativeRelease nativeObject s[486206861488]
10:42:46.662 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: nativeRelease nativeObject e[486206861488]
10:42:46.716 5720-6276/com.floritfoto.apps.xvf W/libEGL: EGLNativeWindowType 0x72543469d0 disconnect failed
10:42:46.725 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: release : mNativeObject = 486206642976 - Surface(name=null)/@0x32ec9cf
10:42:46.725 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: nativeRelease nativeObject s[486206642976]
10:42:46.725 5720-5720/com.floritfoto.apps.xvf I/SurfaceControl: nativeRelease nativeObject e[486206642976]
Run Code Online (Sandbox Code Playgroud) 我确信这是一个微不足道的问题,但我没有找到答案.
我正在制作一个Android应用程序,我想从中打开显示多个图像的图像查看器.我知道如何只使用一个图像:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file1 = new File("/mnt/sdcard/photos/20397a.jpg");
intent.setDataAndType(Uri.fromFile(file1), "image/jpg");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这非常有效.但是如何将几个图像传递给观众?
谢谢!!L.
我在一个Music类中的媒体播放器从另一个辅助节点调用Activity.它工作正常.
但是当屏幕熄灭时(通过超时或按钮),音乐停止播放,当回来并尝试关闭活动时,程序进入"应用程序无响应",因为IllegalStateException在查询时如此mediaplayer.isPlaying().
如何在屏幕关闭时阻止媒体播放器停止?
它必须通过服务?
假设答案是肯定的,我试图将Music类转换为服务(见下文).我也加入<service android:enabled="true" android:name=".Music" />了Manifest.xml,我正在调用这样的Music类:
startService(new Intent(getBaseContext(), Music.class));
Music track = Music(fileDescriptor);
Run Code Online (Sandbox Code Playgroud)
主Activity中只有2个新行startService(new Intent(getBaseContext(), Music.class));和stopService(new Intent(getBaseContext(), Music.class));,以及相应的导入.
但现在我得到InstantiationException错误,因为can't instantiate class在尝试启动服务时.我错过了什么?
这是例外:
E/AndroidRuntime(16642): FATAL EXCEPTION: main
E/AndroidRuntime(16642): java.lang.RuntimeException: Unable to instantiate service com.floritfoto.apps.ave.Music: java.lang.InstantiationException: can't instantiate class com.floritfoto.apps.ave.Music; no empty constructor
E/AndroidRuntime(16642): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2249)
E/AndroidRuntime(16642): at android.app.ActivityThread.access$1600(ActivityThread.java:127)
E/AndroidRuntime(16642): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
E/AndroidRuntime(16642): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16642): …Run Code Online (Sandbox Code Playgroud) Android有任何类型的条件编译吗?
我不得不为Android 3(API 11)制作我的项目,因为ExifInterface在Android 2.3(API 10)中几乎没有任何有用的属性,尽管它出现在API 5(!! ??)中.我不想将我的应用程序限制为ICS用户.
谢谢!
__CODE__使用保存的快照时,可以非常快速地打开habillity.是否__CODE__能够使用这些?尝试使用__CODE__还原已保存状态后,我遇到兼容性状态问题.
我无法在Google上得到答案,如果这是众所周知的,那就很抱歉.
当我对它进行长按时,我想要显示图片的EXIF.所以我实现了这个:
picture.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
...
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
问题是代码没有执行.我添加android:longClickable="true"到xml中,没有成功.
有趣的是,它适用于它OnClick,但它不适用于OnLongClick......也许它与我的图片是ImageView的扩展和(非常好!)类TouchImageView在这里有关:
https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java
我究竟做错了什么??
谢谢!!
我想制作一个有两个部分的垂直布局的图片库:顶部的图像和下面的水平可滚动图标.我知道怎么做.
但我也想要,当自动旋转时,图标保持在右侧.也就是说,我希望将垂直布局更改为水平布局,将水平滚动条更改为垂直布局.
这该怎么做?任何线索/链接将不胜感激.
谢谢!
L.
我有一个ListView只有一个自定义适配器,TextView我想为它设置一个点击监听器.
我应该选择哪一个:ListView.setOnItemClickListener在自定义适配器之外,或TextView.setOnClickListener在自定义适配器内getView()?为什么?
谢谢!
L.
android ×9
adapter ×1
conditional ×1
deprecated ×1
exif ×1
genymotion ×1
gradle ×1
imageview ×1
java ×1
layout ×1
logcat ×1
media-player ×1
screen ×1
snapshot ×1
upgrade ×1
warnings ×1