小编Ang*_*Koh的帖子

缺少对Firebase应用程序索引的支持(​​android lint)

在分析Android工作室的代码(Analyze> Inspect Codes)时,我收到此lint警告.

Google搜索无法将应用程序编入索引; 考虑使用ACTION-VIEW意图填充添加至少一个活动.有关详细信息,请参阅问题说明

这是什么警告,以及如何通过Google搜索将我的应用程序编入索引?对SEO来说这听起来很重要,但我在Google上找不到任何细节.

我也想知道如何从android studio访问"问题解释".

在此输入图像描述

编辑:

"谷歌搜索无法将应用程序编入索引"是旧警告.新警告"缺少对Firebase应用程序索引的支持"

permissions warnings android-manifest android-lint android-studio

148
推荐指数
4
解决办法
6万
查看次数

为什么在包含Google Play服务库时,权限会自动添加到我的AndroidManifest中

我注意到,当我在build.gradle文件中使用以下内容时,会自动添加以下权限

compile 'com.google.android.gms:play-services:7.5.0'
Run Code Online (Sandbox Code Playgroud)

早期版本的播放服务不会出现这种情况.有没有人有解决方案来删除这些不需要的权限?

我只使用广告功能(INTERNET和ACCESSNETWORK_STATE).我不需要LOCATION和USE_CREDENTIALS权限.如何删除这些不需要的权限?

我注意到'manifest-merger-xxx-debug-report.txt'文件包含以下内容

 ...<snipped bunch of other merges>
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
    android:name
        ADDED from com.google.android.gms:play-services-maps:7.5.0:22:22
uses-permission#android.permission.ACCESS_COARSE_LOCATION
ADDED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
    android:name
        ADDED from com.google.android.gms:play-services-maps:7.5.0:23:22
uses-feature#0x00020000
ADDED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
    android:glEsVersion
        ADDED from com.google.android.gms:play-services-maps:7.5.0:25:8
    android:required
        ADDED from com.google.android.gms:play-services-maps:7.5.0:26:8
android:uses-permission#android.permission.READ_EXTERNAL_STORAGE
IMPLIED from AndroidManifest.xml:2:1 reason: com.google.android.gms.maps requested WRITE_EXTERNAL_STORAGE
uses-permission#android.permission.GET_ACCOUNTS
ADDED from com.google.android.gms:play-services-wallet:7.5.0:21:5
    android:name
        ADDED from com.google.android.gms:play-services-wallet:7.5.0:21:22
uses-permission#android.permission.USE_CREDENTIALS
ADDED from com.google.android.gms:play-services-wallet:7.5.0:22:5
    android:name
        ADDED from com.google.android.gms:play-services-wallet:7.5.0:22:22 …
Run Code Online (Sandbox Code Playgroud)

android android-manifest admob android-permissions google-play-services

29
推荐指数
2
解决办法
6876
查看次数

如何使用RecyclerView.scrollToPosition()将位置移动到当前视图的顶部?

RecyclerView.scrollToPosition()是非常奇怪的.例如,假设一个RecyclerView名字"rv".

  1. 如果现在项目10在当前RecyclerView,呼叫rv.scrollToPosition(10),RecyclerView则将项目10滚动到底部.

  2. 如果现在项目10在当前RecyclerView,呼叫rv.scrollToPosition(10),将不会有任何滚动,将不会做任何事情.

  3. 如果现在项目10位于当前的顶部,则RecyclerView调用rv.scrollToPosition(10),RecyclerView将项目10滚动到顶部.

为了帮助理解,请看这张照片 在此输入图像描述

但我需要的是,每当我调用它时,RecyclerView就会像案例3一样将所谓的位置滚动到当前视图的顶部.如何做到这一点?

android scroll android-recyclerview

26
推荐指数
4
解决办法
7万
查看次数

什么是@RecentlyNonNull注释?

我正在Android Studio上进行代码检查,弹出以下警告

Probable bugs
@NotNull/@Nullable problems 
Not annotated method overrides method annotated with @RecentlyNonNull
Run Code Online (Sandbox Code Playgroud)

对于以下代码

@Override
public String toString() {
    return title;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我之前看过@NonNull注释,这意味着返回永远不能为空.但是什么是@RecentlyNonNull?我什么时候使用它?

谷歌搜索引导我到https://android.googlesource.com/platform/tools/metalava/+/fcb3d99ad3fe17a266d066b28ceb6c526f7aa415/stub-annotations/src/main/java/android/support/annotation/RecentlyNonNull.java

这没有提供任何解释.

lint recomendation是添加该注释,但它做了什么?

在此输入图像描述

java android

22
推荐指数
1
解决办法
3721
查看次数

什么时候使用Snackbar isQueued()?(如何排队小吃店)

如果我连续多次调用快餐栏,则只显示最后一个零食栏项目.

例如,使用下面的代码,仅显示第3项.对于第1项和第2项,似乎忽略了Snackbar.LENGTH_LONG(并设置为零?).

Snackbar.make(view, "Item 1", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 2", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 3", Snackbar.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

但是在谷歌文档中,我看到可以对消息进行排队.

public boolean isShownOrQueued ()

Returns whether this Snackbar is currently being shown,
or is queued to be shown next.
Run Code Online (Sandbox Code Playgroud)

那么我们如何实际排队小吃店呢?

android android-snackbar

18
推荐指数
2
解决办法
2712
查看次数

奥利奥(写外部存储)许可

根据"developer.android.com"

If the app targets Android 8.0 (API level 26), the system grants only 
READ_EXTERNAL_STORAGE at that time; however, if the app later requests 
WRITE_EXTERNAL_STORAGE, the system immediately grants that privilege 
without prompting the user.
Run Code Online (Sandbox Code Playgroud)

现在,我有READ_EXTERNAL_STORAGE,我正在请求DownloadManager下载Public Download文件夹中的文件

downloadRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, mAttachmentItem.getFilename());
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到了

E/UncaughtException: java.lang.IllegalStateException: Unable to create directory: /storage/emulated/0/data/user/0/com.abc.cba/files
                                                                           at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:699)
Run Code Online (Sandbox Code Playgroud)

我在Manifest中声明了两个权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

读取权限已被授予,在运行时我正在请求写入权限,系统不会提示任何消息或对话框,它总是在"onRequestPermissionsResult"中被拒绝(未授予)

public static boolean isPermissionsToAccessStorageAreGranted(Context context, Activity activity) {
    ArrayList<String> permissions = new ArrayList<>();

    if (!PermissionUtil.checkPermissions(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
    }

    if (!permissions.isEmpty()) { …
Run Code Online (Sandbox Code Playgroud)

permissions android

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

如何通过ID在Android中打开联系人卡片

是否可以通过联系人的ID打开Android联系人卡片?它适用于电话号码.如果我使用,这是一个例子

Intent i = new Intent();
i.setAction(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT);
i.setData(Uri.fromParts("tel", "123456", null)); //<---- Change here from Phone to IDcontext.startActivity(i);
Run Code Online (Sandbox Code Playgroud)

但我想通过ID打开此联系人卡片,例如,如果联系人的电话号码发生变化.

android contact

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

我没有看到 Allprojects 存储库

Firebase 未连接,并且显示错误,例如无法解析 Android 应用程序模块的 Gradle 配置。解决 gradle 构建问题和/或重新同步。

有些人说要删除 jcenter() ..但是在我的应用程序 gradle 中我没有看到任何所有项目存储库这是我的应用程序built.gradle ...

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}`
Run Code Online (Sandbox Code Playgroud)

firebase android-studio

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

horizo​​ntalScrollView里面的布局,就是屏幕的大小

我是android新手,一直在寻找解决方案,但到目前为止还没有运气.我想创建一个类似下图的布局.

我想有一个linearLayout,它是屏幕的大小.然后有另一个linearLayout,它也是屏幕的大小,但屏幕外.然后我可以在两个虚拟"屏幕"之间滚动.

在此输入图像描述

有一篇有趣的文章解释了如何扩展scrollView类,以便我可以获得一个很酷的捕捉效果,所以如果我可以让它工作,我的应用程序将感觉很像在主屏幕之间滚动.

我已经阅读了有关权重以及scrollView的fillViewport ="true"的内容.我担心我不明白这些如何与horizo​​ntalScrollView一起使用以使linearLayouts填满屏幕.我尝试过fill_parent和wrap_content的各种组合,但无济于事.

正如我所看到的,只要构建子视图(每个"屏幕"中的元素)并考虑到屏幕可变性,此功能不会损害具有不同屏幕的设备之间的应用程序的可移植性.

这是我尝试的XML的一个简单示例:

<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">

<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/txtTestBox"
            >
        </EditText>
    </LinearLayout>

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button 1"
        />

    </LinearLayout>

</LinearLayout>

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

不幸的是,这甚至没有接近我正在寻找的东西.希望这可以做到......

感谢您的任何帮助或建议.

android

11
推荐指数
2
解决办法
6520
查看次数

谷歌控制台错误`OR-IEH-01`

我想在谷歌游戏商店(谷歌播放开发者控制台)上传一个Android应用程序.我正在添加一张新的签证卡并按下付款,它给了我这个错误:

发生意外的错误.请稍后再试.[OR-IEH-01]

任何帮助或任何人都知道为什么会发生这种情况?

android google-play

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