标签: android-compatibility

使用?android:attr /在向后兼容的应用程序中

我正在尝试使我的ICS(API级别15)应用程序与Gingerbread(API级别10)兼容,并且我得到InflateException Error inflating class <Unknown>任何具有?android:attr/属性的布局XML .如果我注释掉这些属性,我可以编译并运行应用程序,但当然,它看起来很糟糕.

我宁愿不复制android.R.attr我正在使用的所有项目,但目前我迷失了另一种方式来做到这一点.

我正在使用ActionBarSherlock来使ActionBar正常工作,而我似乎并没有使用任何其他需要支持库的东西(尽管我在尝试解决这个问题的过程中将其包含在内),只是这些主题 - 基础资源,我坚持.

我正在使用的一些主题资源是:

?android:attr/textColorSecondaryInverse ?android:attr/textAppearanceLarge ?android:attr/dividerVertical ?android:attr/selectableItemBackground ?android:attr/textAppearanceMedium ?android:attr/dividerVertical ?android:attr/dividerHorizontal

java android android-compatibility android-theme

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

针对最大数量的受支持设备优化Android清单文件

当我上传新的APK文件并且我不明白为什么时,我的问题是让我的Manifest文件与许多较新的手机兼容.我正在全新的HTC Evo V上进行测试,但无论出于何种原因,该设备都不会出现在兼容性列表中.

我正在针对API 17进行编译,并且最低限度支持API 10,因此应该包含绝大多数手机.

我尝试过的:

  • 删除了所有权限; 没变
  • 试图不要求制作WIFI; 没变
  • 删除installLocation,看它是否有所作为; 没变
  • 甚至尝试添加小屏幕支持,看看它是否出现; 没变

我读过的内容:

我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.somecompany.appname"
      android:versionCode="10"
      android:versionName="1.0"
      android:installLocation="preferExternal">

    <!-- For expansion pack downloads -->
    <!-- Required to access Android Market Licensing -->
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
    <!-- Required to download files from Android Market -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Required to keep CPU alive while downloading files (NOT to keep screen awake) -->
    <uses-permission android:name="android.permission.WAKE_LOCK" …
Run Code Online (Sandbox Code Playgroud)

compatibility android manifest android-manifest android-compatibility

12
推荐指数
1
解决办法
7786
查看次数

StrictMode 策略违规:android.os.strictmode.NonSdkApiUsedViolation:Lcom/android/org/conscrypt/ConscryptEngineSocket;-&gt;setHostname(

在应用程序发布之前,我在 Google Play 中遇到以下错误。这不是警告而是错误。我可以看到具有类似堆栈跟踪的警告。我不确定该应用程序是否会因为这些而被拒绝,因为预发布报告的摘要令人困惑。它说没有问题。但在稳定性下它会显示 Android 兼容性下的警告和错误。这似乎是由react-native使用的一些库引起的(从一些类似的帖子来看,它看起来像okhttp),但我不确定这个跟踪意味着什么。

我对反应本机非常陌生,不知道如何解决这个问题。我找不到任何解决方案,只有一些类似的帖子,但没有解决方案。由于这个问题,我们的应用程序发布陷入了困境。任何帮助将不胜感激。

StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Lcom/android/org/conscrypt/ConscryptEngineSocket;->setHostname(Ljava/lang/String;)V
    at android.os.StrictMode.lambda$static$1(StrictMode.java:416)
    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
    at java.lang.Class.getDeclaredMethodInternal(Native Method)
    at java.lang.Class.getPublicMethodRecursive(Class.java:2079)
    at java.lang.Class.getMethod(Class.java:2066)
    at java.lang.Class.getMethod(Class.java:1693)
    at okhttp3.internal.platform.OptionalMethod.getPublicMethod(OptionalMethod.java:164)
    at okhttp3.internal.platform.OptionalMethod.getMethod(OptionalMethod.java:149)
    at okhttp3.internal.platform.OptionalMethod.invokeOptional(OptionalMethod.java:66)
    at okhttp3.internal.platform.OptionalMethod.invokeOptionalWithoutCheckedException(OptionalMethod.java:86)
    at okhttp3.internal.platform.AndroidPlatform.configureTlsExtensions(AndroidPlatform.java:123)
    at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:314)
    at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:283)
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:168)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:254)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:200)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) …
Run Code Online (Sandbox Code Playgroud)

android android-compatibility react-native prelaunch

12
推荐指数
1
解决办法
6443
查看次数

来自支持库的GridLayout在Android 2上没有显示2行,onChildVisibilityChanged错误

有没有人获得支持库在Android 2中正确呈现网格布局?而不是2行和列我在屏幕上得到一行并在logcat输出中看到此错误:Android GridLayout无法找到方法android.support.v7.widget.ViewGroup.onChildVisibilityChanged

当我将布局标签从android.support.v7.widget.GridLayout更改为GridLayout时,Android4上的相同布局正在工作 - > ICS

这可能是设置的一些问题吗?我在Eclipse项目属性的Android选项卡中有gridlayout_v7库项目,而v.13 jar在构建路径上.

下面粘贴了失败的XML布局.我在图像按钮标记中明确添加了布局行和列,以便解决问题.如果有人在Android 2上运行支持库,请分享.

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"  android:rowCount="2"
android:gravity="center_vertical" 
android:layout="@drawable/bg_test_main" >

<ImageButton android:id="@+id/btnSentence"
android:layout_row="0"
android:layout_column="0"
android:src="@drawable/testa_btn"
android:contentDescription="@string/spin_fill_in"
android:background="@android:color/transparent"
/>
<ImageButton android:id="@+id/btnAudio"
android:layout_row="0"
android:layout_column="1"
    android:src="@drawable/testb_btn"
android:contentDescription="@string/audio_quiz"
android:background="@android:color/transparent"
/>
<ImageButton android:id="@+id/btnPickWord"
android:layout_row="1"
android:layout_column="0"
android:src="@drawable/testc_btn"
android:background="@android:color/transparent"
android:contentDescription="@string/def_pick_word" />

<ImageButton android:id="@+id/btnPickDef"
android:layout_row="1"
android:layout_column="1"
android:src="@drawable/testd_btn"
android:background="@android:color/transparent"
android:contentDescription="@string/pick_def" />

</android.support.v7.widget.GridLayout>
Run Code Online (Sandbox Code Playgroud)

android grid-layout android-widget android-layout android-compatibility

10
推荐指数
1
解决办法
7732
查看次数

在android中过度滚动的视觉指示

我试图添加一些视觉指示,在ViewPager中没有更多页面在所需的方向上.但是我很难找到一个地方,在哪里放置相关的代码.

我尝试使用以下代码扩展ViewPager类,但Toast未显示(ev.getOrientation()始终返回0).我也尝试了历史点,但ev.getHistorySize()也返回0.

我错过了什么?

类示例:

public class CustomViewPager extends ViewPager {

    public CustomViewPager(Context context) {
        super(context);
    }

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * @see android.support.v4.view.ViewPager#onTouchEvent(android.view.MotionEvent)
     */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        boolean result = super.onTouchEvent(ev);

        switch (ev.getAction() & MotionEventCompat.ACTION_MASK) {
            case MotionEvent.ACTION_MOVE:
                if (ev.getOrientation() > 0) {
                    Toast.makeText(getContext(), "left", 0).show();
                }
        }

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-compatibility android-overscoll android-viewpager

10
推荐指数
3
解决办法
7985
查看次数

我可以在android.support.v7.widget.Toolbar的溢出菜单上使用actionLayout吗?

我试图SwitchCompat在溢出菜单上使用一个小部件,android.support.v7.widget.Toolbar但我无法让它工作,它总是显示为空白.

这是我的菜单定义:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.oveflowtest.ScrollingActivity">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>
    <item android:id="@+id/test"
          app:actionLayout="@layout/testlayout"
          app:showAsAction="never"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

这是testlayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
<android.support.v7.widget.SwitchCompat
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:text="test"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

此外,如果我showAsAction改为always而不是never那时它在工具栏上显示就好了,但我不想在那里,我希望它在溢出菜单上,当我按下3个点时打开.

我知道有一个选项可以使用复选标记,但我正在跟随设计要求切换.

谢谢.

android android-appcompat android-compatibility android-toolbar

10
推荐指数
1
解决办法
1026
查看次数

为目标 API 级别 29 编译时,在 Android API 级别 &lt; 24 上访问 NMEA?

我只是尝试将我们的应用程序的目标和编译 API 级别更新为 29(Android 10),并注意到我无法再编译,因为LocationManager.addNmeaListener只接受OnNmeaMessageListener(在 API 级别 24 中引入)而不是旧的和已弃用的GpsStatus.NmeaListener(因此,我得到“不兼容”类型:NmeaListener 不能转换为 OnNmeaMessageListener ")。

我知道这addNmeaListener(NmeaListener)在以前的版本中已被弃用,我准备重构我的代码以针对不同的 API 级别进行分支,但是由于我找不到任何名称不同的弃用方法或 LocationManager 的任何兼容库,似乎没有办法如果我以 Android 10 为目标,则访问 Android 6 设备上的 NMEA 数据(在某些时候这将是强制性的)。

关于如何在旧设备上获取 NMEA 数据的任何建议?

如果有人对如何避免 NMEA 数据有想法,请补充一点背景知识:我们的应用程序“phyphox”旨在让学生使用手机中的传感器进行物理实验。在旧设备(Android 4+)上运行对我们来说很重要,因为在物理教育中使用智能手机传感器对于资金很少的学校和学生尤其有价值。同时,我们希望所有设备(新/旧、Android/iOS)都有可比较的实验结果。因此,我们需要 NMEA 数据来计算大地水准面以上的高度,而不是 WGS84 椭球以上的高度(由 提供Location.getAltitude(),因此学生得到一致和可比的结果。因此,也欢迎任何关于实现这一目标的替代方法的建议。

您可以在此处查看 API 28 的当前代码:

https://github.com/Staacks/phyphox-android/blob/master/app/src/main/java/de/rwth_aachen/phyphox/gpsInput.java

gps android android-compatibility android-api-levels android-gps

9
推荐指数
1
解决办法
1425
查看次数

如何使用兼容性库获取"?android:attr/actionBarSize"

我正在尝试在Android 2.2项目中使用Fragments和ActionBar.使用"?android:attr/actionBarSize"时有一些错误,如何正确获取和设置该值?

例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frags">

    <fragment class="com.example.android.hcgallery.TitlesFragment"
            android:id="@+id/frag_title"
            android:visibility="gone"
            android:layout_marginTop="?android:attr/actionBarSize"
            android:layout_width="@dimen/titles_size"
            android:layout_height="match_parent" />

    <fragment class="com.example.android.hcgallery.ContentFragment"
            android:id="@+id/frag_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

错误:找不到与给定名称匹配的资源(在'layout_marginTop'中,值为'?android:attr/actionBarSize').

android android-layout android-compatibility

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

是否仍然需要使用ActionBarSherlock?

直到今天早些时候,我的印象是,如果我想在低于SDK版本11的设备上使用ActionBar,我需要使用ABS.但是,在看了SO的一些问题后,我发现了这个问题:http://developer.android.com/resources/samples/ActionBarCompat/index.html

该系统看起来像是在preHoneycomb设备上提供了一个功能齐全的动作栏系统.具体来说,虽然我没有在那些关于操作栏选项卡的类中看到任何内容.有没有人设法将这个actionbarhelper类与actionbartabs一起使用?

有没有人有使用这两种系统的经验?我有一段时间试图导入我的Android项目与ABS一起工作,是否将我的R文件链接起来,将清单带入文件夹,获取正确的包名称以便我的活动将启动,以及超出所有这一切,高度混乱的src文件夹.因此,如果可以使用此Google提供的代码,我认为可能需要 - 如果可以使用标签吗?

android android-compatibility actionbarsherlock android-actionbar

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

如何让我的网站移动和平板电脑兼容?

我想让我现有的网站在手机,平板电脑上查看时自动调整,甚至在桌面上调整屏幕时也是如此.

没错,如果太难了,你有什么建议?我基本上想要一个使用相同网址的ipad和iphone(android)版本,在检测到移动浏览器时使用自动直接.

非常感谢

javascript mobile android-compatibility web

8
推荐指数
3
解决办法
8万
查看次数