小编Max*_*lis的帖子

三元表达式有时会绕过编译器检查验证

出于某种原因,以下代码正常编译:

public double getSomeDouble() {
    return "" != null ? 3.7d : null;
}
Run Code Online (Sandbox Code Playgroud)

我通常希望Eclipse将其标记为错误(null不能转换为double原语).

只是为了支持我的假设,这段代码不起作用:

public double getSomeDouble() {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

Eclipse会将该return null行标记为错误,说明:

类型不匹配:无法转换nulldouble

为什么它在前面的代码片段中没有说同样的东西?!

java eclipse expression compilation ternary-operator

21
推荐指数
1
解决办法
671
查看次数

Android支持注释 - 如何使用泛型列表使用IntDef/StringDef(Typedef Annotations)?

最近我开始使用android的支持库IntDef/StringDef(Typedef Annotations).我按照Android工具项目网站中的文档进行操作,无法找到或在任何其他相关教程中如何使用带有泛型数组的IntDef/StringDef typedef注释.例如,假设我有以下代码片段:

public static final String MEDIA_IMAGE = "image";
public static final String MEDIA_TEXT = "text";
public static final String MEDIA_LINK = "link";
public static final String MEDIA_AUDIO = "audio";
public static final String MEDIA_VIDEO = "video";
public static final String MEDIA_VOICE = "voice";

@StringDef ({MEDIA_IMAGE, MEDIA_TEXT, MEDIA_LINK, MEDIA_AUDIO, MEDIA_VIDEO, MEDIA_VOICE})
@Retention(RetentionPolicy.SOURCE)
public @interface Media {}
Run Code Online (Sandbox Code Playgroud)

我想使用泛型数组和typedef注释做类似的事情:

public List<@Media String> getMediaItems() {
    ...
}

public void setMediaItems(List<@Media String> mediaItems) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是不可能的..因为编译器说:

"此语言级别不支持类型注释"

有什么建议?

java generics android annotations

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

在Gradle构建文件中放置apply Crashlytics插件指令的位置

最近我将我的android项目从Eclipse迁移到了Android Studio.目前我的项目具有以下Gradle脚本结构:

  • 顶级gradle构建文件
  • 主模块(我的应用程序)gradle构建文件
  • 模块A(我的应用程序)gradle构建文件
  • 模块B(我的应用程序)gradle构建文件
  • 模块C(我的应用程序)gradle构建文件

我的主gradle构建文件的内容:

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

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.1'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

}

allprojects {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

我想确保整个项目都有崩解剂.我最初尝试添加

apply plugin: 'crashlytics'
Run Code Online (Sandbox Code Playgroud)

到主项目gradle文件,但我遇到以下错误:

错误:(2,0)Crashlytics应用于没有Android插件的项目.请确保在适合您项目的Android插件之后应用Crashlytics插件.

然后我移动apply plugin: …

plugins android gradle crashlytics

10
推荐指数
0
解决办法
4400
查看次数

Android Deeplink pathPrefix属性被忽略

我在清单文件中为我的Android应用程序定义了一个深层链接:

  <activity android:name="com.example.DeeplinkActivity"
        android:screenOrientation="portrait"
        android:theme="@style/MyBaseTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />

                         <!-- Accepts URIs that begin with "example://shelf” -->
            <!-- Currently handles Ads deeplink structure (iPhone structure) -->
            <data
                android:host="shelf"
                android:pathPrefix=""
                android:scheme="example" />

            <!-- Accepts URIs that begin with "example://com” -->
            <data
                android:host="com"
                android:pathPrefix=""
                android:scheme="example" />

            <!-- Accepts URIs that begin with http://www.example.com/some/sample/page.htm” -->
            <data
                android:host="www.example.com"
                android:pathPrefix="/some/sample/page.htm"
                android:scheme="http" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

我的应用程序中的一些链接看起来很相似,但不应被视为深层链接.它们以http://www.example.com开头,但它们具有完全不同的前缀.例如:http://www.example.com/other/not/deep/link.htm.

出于某种原因,即使使用前缀"/some/sample/page.htm"定义了为DeeplinkActivity定义的intent过滤器也是如此.

前缀是否被忽略?如果不是为什么在定义deeplink intent过滤器时应该使用pathPrefix属性?

android uri deep-linking intentfilter android-manifest

7
推荐指数
1
解决办法
2970
查看次数

如何将 Gson 附加功能添加到 Android 项目中?

我正在使用 gson 解析器(最新版本 - > 2.8.2)。

我想使用RuntimeTypeAdapterFactory它是 gson extras 的一部分。

在我build.gradle目前有一个单一的编译指令:

compile 'com.google.code.gson:gson:2.8.2'
Run Code Online (Sandbox Code Playgroud)

但是,这仅给了我没有额外内容的 gson 库(项目中无法识别 RuntimeTypeAdapterFactory ......)。

我查看了 gson extras 的 pom 文件(https://github.com/google/gson/blob/master/extras/pom.xml)并尝试将以下行添加到我的构建 gradle 中:

compile 'com.google.code.gson:gson-extras:2.8.2'
Run Code Online (Sandbox Code Playgroud)

但是 gradle 只是不会编译 gson 附加项:

"Error:Failed to resolve: com.google.code.gson:gson-extras:2.8.2"
Run Code Online (Sandbox Code Playgroud)

任何想法如何使这项工作?

非常感谢您在这件事上的时间和帮助。

android maven gson build.gradle android-gradle-plugin

7
推荐指数
2
解决办法
4128
查看次数

Material Design中的Android通知操作图标大小

材料设计的通知操作(按钮)中的图标大小应该是多少?我正在寻找完整的图标大小(图标边界/光学边界).

在此输入图像描述

我遇到了一个非常相似的问题:

Android通知操作按钮中图标的大小是多少?

但那是在材料设计时代之前.最重要的是,所选答案是不完整的,因为它没有为每个设备密度指定图标大小(图标边界/光学边界).

android android-notifications android-icons material-design

6
推荐指数
1
解决办法
2603
查看次数

在Android中以编程方式从谷歌播放更新应用程序

在我的应用程序中,我有一个链接.点击链接后,我想将用户发送到Google Play并自动更新应用.

我试过这个:

// package name from menifest: com.infibond.infi
public void installInfiApplication(View view){
    final String apkurl = "market://details?id=" + "com.infibond.infi";
    final Uri marketUri = Uri.parse(apkurl);

    Intent promptInstall = new Intent(Intent.ACTION_VIEW).setData(marketUri);
    startActivity(promptInstall);
}
Run Code Online (Sandbox Code Playgroud)

但这会将用户发送到商店而不更新应用程序.

有办法吗?如果是,那么它是什么?

android android-intent google-play

5
推荐指数
1
解决办法
790
查看次数