小编and*_*per的帖子

什么是"requestCode"用于PendingIntent?

背景:

我通过AlarmManager使用PendingIntent进行报警.

问题:

起初我认为为了取消之前的那些,我必须提供我之前用来启动警报的确切requestCode.

但后来我发现我错了,因为取消API说:

删除具有匹配Intent的所有警报.任何类型的警报,其Intent与此匹配的警报(由filterEquals(Intent)定义)将被取消.

看一下" filterEquals ",文档说:

为了意图解析(过滤)的目的,确定两个意图是否相同.也就是说,如果他们的行为,数据,类型,类别和类别是相同的.这不会比较意图中包含的任何额外数据.

所以我没有得到"requestCode"的用途......

问题:

什么是"requestCode"用于?

如果我使用相同的"requestCode"创建多个警报怎么办?他们互相覆盖了吗?

android alarmmanager android-intent android-pendingintent

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

VectorDrawable - 它是否适用于Lollipop之前版本的Android?

背景

我注意到Android现在支持某种矢量绘图,通过一个名为" VectorDrawable " 的类(以及AnimatedVectorDrawable,BTW).我通过查看Android-Studio上的新功能找到了它.

我不知道这是否会是具有把多个文件分成多个文件夹(年底mdpi,hdpi,xhdpi,等).这将是伟大的,并可能在某些情况下最小化应用程序大小.

问题

我想就这个新课提出几个问题:

  1. 是否可以在较旧的Android版本中使用它,也许可以通过甚至是Google支持库的库?

  2. 我不熟悉它是如何工作的,但Lollipop可以处理SVG文件吗?它可以做任何可以在SVG文件上实现的东西吗?

  3. 除了我发现的文档之外,是否有使用它的示例/教程/视频?

android vector gradle android-vectordrawable

84
推荐指数
5
解决办法
5万
查看次数

如何从Google-Analytics迁移到Firebase-Analytics?

背景

最近几个月,谷歌发布了一种名为" Firebase Analytics " 的新分析方案.

问题

由于该应用已经拥有Google-Analytics,我发现一些障碍,我无法看到如何最好地处理.

问题

  1. 以前,"newTracker"函数需要property-id.现在我没有看到它.这是否意味着它不需要一个?

  2. 以前,"enableAdvertisingIdCollection"也可用于收集广告信息.我在新的API中找不到它.它是自动收集的吗?

  3. "setDryRun"可用于禁止将数据发送到服务器,现在我看不到它.对于应用程序的调试版本,这是否意味着它是自动的?是否所有函数都写入日志?

  4. 以前,我可以跟踪"屏幕":

    public void setScreenName(String name) {
        mGoogleAnalyticsTracker.setScreenName(name);
        mGoogleAnalyticsTracker.send(new HitBuilders.ScreenViewBuilder().build());
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在我没有看到它,但正如我所读到的,我认为它是自动的,因此无论如何它都会发送活动生命周期的数据.这是真的吗?

  5. 可能是最重要的事情:以前我可以跟踪使用类别,动作,标签和值:

    public void trackEvent(final String category, final String action, final String label, final long value) {
        mGoogleAnalyticsTracker.send(new HitBuilders.EventBuilder()
                .setCategory(category).setAction(action)
                .setLabel(label).setValue(value).build());
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在我看到一种完全不同的方式来跟踪事件("自定义事件"),使用bundle.例:

    Bundle bundle = new Bundle();
    bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id);
    bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name);
    bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image");
    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
    
    Run Code Online (Sandbox Code Playgroud)

    它是如何工作的?它是如何在Firebase Analytics网站上显示的?我想我可以让logEvent的第一个参数表现得像Google Analytics的类别参数,但是我能做什么/我应该做什么呢?根据文档,这应该没问题:

    public void trackEvent(final String category, final String action, final String label, final long …
    Run Code Online (Sandbox Code Playgroud)

android google-analytics firebase-analytics

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

如何在Android Marshmallow上使用传统的Apache HTTP客户端?

背景

在Android Marshmallow上,Google完全取消了对Apache HTTP客户端的支持(链接在这里),因为与替代方案相比,它没有良好的性能.

这可能也是Android Marshmallow上如此多应用程序崩溃的原因.

问题

通过将此行添加到gradle文件,Google允许您仍然使用此API,而不是内置的API:

useLibrary 'org.apache.http.legacy'
Run Code Online (Sandbox Code Playgroud)

所以,这就是我做的:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}
Run Code Online (Sandbox Code Playgroud)

和:

android {
    compileSdkVersion 'android-MNC'
    buildToolsVersion "23.0.0 rc3"
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "com.example.user.androidmtest"
        minSdkVersion 'MNC'
        targetSdkVersion 'MNC'
        versionCode 1
        versionName "1.0"
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,它编译得很好(没有显示错误,我可以运行概念验证应用程序,因为它没有任何特殊代码),但当我尝试使用我知道的一些类时是旧API的一部分(如"HttpClient"类),我看到它不允许我这样做.

我知道不建议使用此解决方案,但我们必须让应用程序准备好至少暂时在那里工作,直到我们100%完成Android Marshmallow应该改变的所有事情,我们不希望出现意外情况.崩溃的形式.

这是一个截图:

在此输入图像描述

这个问题

它为什么会发生?我使用得当吗?


编辑:这里报告了这个问题:

https://code.google.com/p/android/issues/detail?id=181474

java android android-gradle-plugin android-6.0-marshmallow

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

插页式Admob广告:"IllegalStateException:只有全屏活动可以请求定位"

背景

我有一个使用Admob SDK的应用,用于显示插页式广告(全屏广告).

最近谷歌已经更新了SDK以及许多其他东西(构建工具,gradle插件,IDE等),包括admob(firebase ads).

compile 'com.google.firebase:firebase-ads:11.4.2'
Run Code Online (Sandbox Code Playgroud)

问题

更新后,我注意到每当应用尝试展示插页式广告时,它都会崩溃.

崩溃日志是这样的:

10-28 14:01:01.394 4523-4523/... I/Ads: Ad opening.
10-28 14:01:01.400 1606-2154/? E/ActivityManager: Activity Manager Crash. UID:10080 PID:4523 TRANS:63
                                                  java.lang.IllegalStateException: Only fullscreen activities can request orientation
                                                      at com.android.server.am.ActivityRecord.setRequestedOrientation(ActivityRecord.java:2189)
                                                      at com.android.server.am.ActivityManagerService.setRequestedOrientation(ActivityManagerService.java:4975)
                                                      at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:1101)
                                                      at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2927)
                                                      at android.os.Binder.execTransact(Binder.java:697)


10-28 14:01:01.403 4523-4523/... D/AndroidRuntime: Shutting down VM
10-28 14:01:01.406 4523-4523/... E/AndroidRuntime: FATAL EXCEPTION: main

java.lang.RuntimeException: Unable to start activity ComponentInfo{.../com.google.android.gms.ads.AdActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation
Run Code Online (Sandbox Code Playgroud)

事情是,它之前工作得很好.现在我不确定是什么导致它发生.

在网上搜索,我没有看到任何谈论"只有全屏活动可以请求定位"的内容.

我在清单中所拥有的东西有点陈旧,可能不再需要了:

    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:theme="@android:style/Theme.Translucent"/>
Run Code Online (Sandbox Code Playgroud)

我说它可能不需要,因为我不能在教程中看到它,即使我记得我过去做过:

android admob android-8.1-oreo

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

如何将快速滚动条添加到RecyclerView

背景

在ListView上,您可以使用快速滚动条,允许您拖动滚动条以轻松滚动到您希望的任何位置(使用fastScrollEnabled属性)

与" SectionIndexer "类和可选的一些属性一起,您可以在使用此滚动条时显示一个很好的弹出窗口(此处链接).

联系人应用程序上会显示这样的内容,以便您可以轻松滚动到特定字母.

问题

RecyclerView似乎没有任何这些.甚至不是快速滚动.

这个问题

如何为RecyclerView添加快速滚动功能?

android scrollbar fastscroll sectionindexer android-recyclerview

70
推荐指数
5
解决办法
4万
查看次数

Firebase JobDispatcher - 与以前的API(JobScheduler和GcmTaskService)相比,它是如何工作的?

背景

Google有多种工作/任务调度解决方案,例如JobSchedulerGcmTaskService.每个都有自己的优点和缺点.

最近,Google推出了一个名为"Firebase JobDispatcher"的新库.

问题

遗憾的是,关于这个新API的知识很少.事实上,很难找到任何关于它的东西.

我发现的只有他们的公告视频样本.但即使是他们,也没有太多关于这个API的知识.

问题

看看之前的问题,调查和我与其他API(例如,这里)的比较,我想问一下新的API是如何工作的,并且知道在使用它时应该考虑什么:

  1. 作业是否可以使用与之相关的参数,甚至可以在需要时进行修改?他们在示例中说" 一个可选的用户提供的附加软件包.默认是一个空的Bundle. "这是吗?它可以在执行时被作业修改吗?

  2. 工作可以轻松重新安排吗?它被称为" 一个布尔值,表明作业是否应该重复 ".怎样才能选择何时重新安排?我已经尝试了样本,并选择了"Recurring",但它似乎没有再次运行,只有一次.

  3. 它可以保护与图书馆的工作(因为独特的ID)吗?

  4. 更新应用程序时是否需要格外小心(如先前的API所做的那样)?更新应用后,仍可安排作业吗?对样本进行测试,似乎在更新应用程序后作业已完全消失.可以避免吗?

  5. RECEIVE_BOOT_COMPLETED如果我希望即使重启设备仍然可以安排作业,是否需要?样本似乎有它.

  6. 是否可以获取所有预定作业及其信息(包括参数)的列表,并能够取消特定/所有作业甚至修改它们?

  7. 在清除数据操作应用程序时,是否会删除作业?

  8. 是否有可能告诉工作它最好在一段时间内运行(例如:早上7点到8点之间)?它被提到" ExecutionWindowTrigger - 它指定了一个应该执行Job的时间窗口 ".是吗?当它错过这个窗口会发生什么?

  9. 该方法onStartJobJobService类返回一个布尔和它的说明" 是否有剩余的更多的工作. "这是什么意思?方法的needsReschedule参数是什么jobFinished意思?它们是否相互关联?

  10. 我应该知道有什么限制吗?例如,每个函数的最小值和最大值?

android android-jobscheduler firebase-job-dispatcher gcmtaskservice

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

"minifyEnabled"vs"shrinkResources" - 有什么区别?以及如何获得节省的空间?

背景

根据Andriod文档的"资源缩小"网页(此处),您可以通过build.gradle文件使用以下行来最小化应用程序的大小:

android {
    ...

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而且,他们说在使用它时,它还会告诉你在这个过程中节省了多少:

启用shrinkResources时,构建应用程序时应在构建期间显示如下输出:

...删除未使用的资源:二进制资源数据从2570KB减少到1711KB:已删除33%

问题

我无法找到这些问题的答案:

  1. 使用Android-Studio本身创建已签名的应用程序时,在哪里可以找到已保存的内容以及删除/修改的文件的信息?
  2. "shrinkResources"究竟做了什么"minifyEnabled"不这样做?为什么"shrinkResources"依赖于"minifyEnabled"?
  3. 这些选项中的任何一个都会影响图像文件的大小和/或质量吗?
  4. Proguard不负责缩小源代码吗?我问这个是因为它说"你必须启用minifyEnabled才能打开代码收缩"

android build.gradle

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

如何禁用NestedScrollView和CollapsingToolbarLayout的滚动,例如下面没有更多内容?

背景

我尝试添加许多应用程序所显示的相同功能,其中屏幕的上部区域根据滚动内容缩小和扩展.

为此,我使用了Google的设计库,如CheeseSquare示例所示.

问题

事实是,无论NestedScrollView中有多少内容,它都允许我在内容的最后一个视图下方滚动,只是为了让我看到动作栏的最终状态,具有最小的自身大小.

简而言之,这是我在滚动到底部时看到的内容(CheeseSquare示例的修改内容):

在此输入图像描述

虽然这是滚动到底部时我想要的(从联系人应用程序中获取):

在此输入图像描述

我也试图修复ThreePhasesBottomSheet示例中的一个错误,即使它处于窥视状态,滚动底部内容也是可能的.要重现,请开始水平滚动(这不会做任何事情,因为没有任何东西可以滚动),然后垂直滚动,这会以某种方式触发底部内容的滚动.

因此,我需要在"transformView()"方法中禁用滚动,在"翻译"的情况下

这是使用正常用法的方式:

在此输入图像描述

这就是它如何处理不阻止滚动的错误:

在此输入图像描述

我试过的

我试图使用" layout_scrollFlags "标志,将高度更改为wrap_content,并删除clipToPadding和fitsSystemWindows属性.

这是示例XML文件,我已将其修改为仅包含一个cardView而不是多个:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="@dimen/detail_backdrop_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingTop="24dp">

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/card_margin">

                <LinearLayout
                    style="@style/Widget.CardContent"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Info" …
Run Code Online (Sandbox Code Playgroud)

android material-design android-design-library android-collapsingtoolbarlayout nestedscrollview

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

通过Android中的服务获取GPS位置

我需要使用后台服务监控用户的位置,然后加载它们并显示用户的路径.

使用活动,获取GPS位置非常容易,但是当我通过服务完成它时,我遇到了一个问题,因为它似乎只适用于looper线程(或类似的东西).

当我在互联网上寻找解决方案时,我发现许多人遇到了同样的问题,但我找不到合适的解决方案.有人说你需要使用prepare-> loop-> quit,有些人说你必须使用handlerThread,但是,我仍然无法找到如何以正确的方式做这些事情.

service gps android location

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