我希望在两个独立的API级别上使用Android的Camera.open()方法.首先是API级别7,它是2.1和更高,第二个是2.3.3和2.3.4,它们是API级别9.
在API级别7和8上,Camera.open方法不接受任何参数.在API级别9及更高级别,摄像机采用整数参数,为其提供要使用的cameraId.
如何在同一代码中定位两个API级别?与此伪代码类似的东西:
Camera lCamera;
if (Platform.APILevel < 7){
lCamera.open();
}else {
lCamera.open(0);
}
Run Code Online (Sandbox Code Playgroud) Jelly Bean已经问世,它们有一些相当不错的功能.我的问题是,我希望尽可能多地设备目标,但同时拥有一个可以使用最高API级别的所有功能的应用程序.
所以说例如我有这个
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="16"/>
Run Code Online (Sandbox Code Playgroud)
我在API 16上构建我的应用程序.有没有办法限制代码的某些部分,只有在运行能够运行它的设备时才运行?例如,如果我想要NFC,那么只有姜饼设备及以上才能使用该功能,否则froyo down甚至不会看到该功能.
我的Activity中有一个drawable对象.setAlpha()for drawable在API级别1 getAlpha()中引入,但在API级别19(KitKat)中引入.是否有任何替代API或支持库来获取drawable的alpha/opacity值.
而且我还有NineOldAndroids库,但getAlpha()仅适用于VIEWS.
我在官方的android博客中引用了这个:
权限更改 使用Marshmallow,权限已从安装时移至运行时.这是SDK 23+的强制性更改,这意味着它将影响所有开发人员和所有针对Android 6.0的应用程序.
所以...如果您使用Android 6.0(api 23)进行编译但是您的目标是Android 4.4(api 20),则可以保留旧的权限系统吗?
我的意思是这样做:
compileSdkVersion 'Google Inc.:Google APIs:23'
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 20
}
Run Code Online (Sandbox Code Playgroud)
我现在的项目的必要条件是维护旧的权限系统并定位sdk版本20(因为我需要维护旧的通知系统,如果你的目标sdk版本高于20,你必须使用新的通知系统).所以...如果我的目标是sdk版本20,我可以使用Api 23进行编译并维护旧的权限系统吗?
谢谢
android android-build android-gradle-plugin android-api-levels
下面是一些从非静态方法调用的源代码.我收到了错误
"调用需要API级别23(当前最小值为15); android.app.Fragment#getContext"
android.content.Context context = (Context) getContext();
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得上下文对象?
在object explorer> Gradle Scripts> build.gradle下,我看到了这一点.看起来像版本23给我.我在寻找正确的位置吗?
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.test.test"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
}
Run Code Online (Sandbox Code Playgroud)
看起来我有Android Studio 1.5.1.我刚刚在Android Studio中选择了SettingsActivity项目模板.并为该默认代码添加了一个类.
我对以下属性的使用有点困惑。
> android:layout_marginRight and android:layout_marginEnd
> android:layout_marginLeft and android:layout_marginStart
> android:layout_toLeftOf and android:layout_toStartOf
> android:layout_toRightOf and android:layout_toEndOf
> android:layout_gravity="right|end"
> android:layout_gravity="left|start"
Run Code Online (Sandbox Code Playgroud)
以下是我提到的一些事实。如果我错了,请纠正我。
为了支持 Ltr 和 Rtl 布局并支持 api 级别 17 之前的版本,建议将上述属性始终成对放置。
“开始”和“结束”概念是在 API 级别 17 中添加的,将
优先用于 api 级别>=17 的 Ltr 设备,“右”和“左”概念将优先用于 api 级别 <17 的 Ltr 设备
如果我们的应用程序 minskdversion >=17 那么我们可以忽略“right”和
“left”属性而只使用“start”和“end”属性
另外,我想知道如果我成对添加上述属性,对性能/优化是否有任何不利影响,例如-
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|end"
android:layout_marginRight="@dimen/dp10"
android:layout_marginEnd="@dimen/dp10"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginStart="@dimen/dp10"
android:layout_toLeftOf="@+id/bar"
android:layout_toStartOf="@+id/bar"
/>
Run Code Online (Sandbox Code Playgroud) layout android android-layout android-view android-api-levels
我想存储键值对< 4.1, 29..35 >,我可以用它来做HashMap<Double, Range<Int>>:
val womanMap: HashMap<Double, Range<Int>> = hashMapOf()
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
fun createMap() {
//This both requires API 21
val range = Range(29,35)
womanMap[4.6] = Range.create(29,35)
}
Run Code Online (Sandbox Code Playgroud)
如何在API级别21下执行此操作?
我正在尝试使用Gingerbread,api 10为我的(非常)旧Android手机开发应用程序.
但是使用android studio作为IDE,问题似乎永远存在:
minSdkVersion 10 cannot be smaller than version 14 declared in libraryimplementation 'com.android.support:appcompat-v7:26.1.0'改为implementation 'com.android.support:appcompat-v7:25.1.0'......这就是我不知道如何继续下去的观点
正如我所想,这不可能是真的,一个项目抛出了manny错误,我没有创建一个单独的类并且没有编写一行代码,我尝试从命令行构建.
它有效,但我习惯了IDE功能,不喜欢错过它们.所以我的问题是:
如何使用android studio为api级别开发一个简单的Android应用程序?
是否有指导将项目安装到api 10?
我是否处于"正确"的道路上?
是否有一个api 10级应用程序的骨架项目,我可以导入(好像我可以在项目向导中选择api 10)?
我知道原因,谷歌不再支持api <14了.
我仍然不明白为什么我不能使用我完全健康的硬件.
我仍然希望能够为我的旧手机编写一个简单的应用程序.
¹错误日志:
Information:Gradle tasks [:app:assembleDebug]
/home/aik/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.1.0.aar/2ab2d76d88a035b2d8a733b1b9a020a8/res/values-v14/values-v14.xml
Error:(8, 5) error: style attribute 'android:attr/textAllCaps' not found.
Error:resource android:style/TextAppearance.Material not found.
Error:resource android:style/TextAppearance.Material.Body1 not found.
Error:resource android:style/TextAppearance.Material.Body2 not found.
/home/aik/test_api10/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-v14/values-v14.xml
Error:(5) style attribute 'android:attr/textAllCaps' not found.
Error:resource android:style/TextAppearance.Material.Button not …Run Code Online (Sandbox Code Playgroud) 使用 Comparator 时出现 api 级别错误,但是当我添加 @RequiresApi(N) 注释时,错误得到解决。

问题是添加 @RequiresApi(N) 注释后,此应用程序无法在低于 24 的 api 级别运行,我在 API 23 手机上收到此错误 -
Process: com.example.chatapp, PID: 13778
java.lang.NoClassDefFoundError: adapters.chatPageAdapter$$ExternalSyntheticLambda0
at adapters.chatPageAdapter.onBindViewHolder(chatPageAdapter.java:59)
at adapters.chatPageAdapter.onBindViewHolder(chatPageAdapter.java:25)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
Run Code Online (Sandbox Code Playgroud)
那么,有什么方法可以使用这个方法,甚至可以在 23 以下的 api 上运行应用程序吗?
构建.Gradle -
android {
compileSdk 30
buildFeatures {
viewBinding true
}
defaultConfig {
applicationId "com.example.chatapp"
minSdk 23
targetSdk 30
versionCode 1
versionName "1.0" …Run Code Online (Sandbox Code Playgroud)