小编Séb*_*ien的帖子

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

将引用返回值分配给非引用变量

class A { ... };
A& getA();
A anA = getA();
Run Code Online (Sandbox Code Playgroud)

第3行究竟发生了什么?

A的复制构造函数是否被调用,从而创建一个独立于函数返回(通过引用)的对象?

c++ reference

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

getDrawable()的效率:是框架缓存的Drawable吗?

我需要在每次单击时更改切换按钮的图像.

这样做有效吗?

public void onClickToggleButton(View v) {
    if(_on) {
        _on=false;
        myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_off));
    } else {
        _on=true;
        myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_on));
    }
}
Run Code Online (Sandbox Code Playgroud)

或者它是否意味着Drawable每次都会从PNG文件解码?

在这种情况下,getDrawable()只调用两次(in onCreate())并保持我自己对2 Drawables 的引用会更好.

performance android android-drawable

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

adb over Wi-Fi (Android 11+) on Windows:如何保持固定端口或自动连接?

无线连接亚行的工作我的Android手机11 + Windows工作站上的罚款。

但这并不方便,因为每次手机 Wifi 断开/重新连接时,我都必须:

  1. 在 Android 设置中打开无线调试。
  2. 记下端口号 XXXXX,它每次都在变化!
  3. adb connect 192.168.1.10:XXXXX在电脑上运行。

有没有办法跳过第 2 步:

  • 使端口固定?
  • 让 Windows 自动检测新端口上的电话?(文档似乎暗示在 MacOS 上不需要第 2 步和第 3 步,一旦配对完成,我想知道这是如何工作的)

android adb adbwireless android-studio

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

警告的含义"类实现可能没有超类"

我创建了一个非常基本的Objective-C类.

MyClass.h

@interface MyClass: NSObject
@end
Run Code Online (Sandbox Code Playgroud)

MyClass.m

#import "MyClass.h"
@interface MyClass()
@end

@implementation MyClass: NSObject  {
    NSMutableArray* _myArray;
}
@end
Run Code Online (Sandbox Code Playgroud)

Xcode在线上显示以下警告@implementation:

类实现可能没有超类

如果我删除该NSMutableArray* _myArray;行,警告就会消失.

这个警告意味着什么?我究竟做错了什么?

objective-c ios

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

如何忽略"忽略InnerClasses属性"Lint警告

我使用的几个第三方.jar库正在抛出数千个像这样的Lint警告:

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.inneractive.api.ads.sdk.IAmraidWebView$a) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class. …
Run Code Online (Sandbox Code Playgroud)

android lint build.gradle

6
推荐指数
0
解决办法
294
查看次数

为什么Content Provider没有权限,并且对任何应用程序都可以使用exported = true?

这是我试图了解Android Content Provider权限的测试:

App ProviderApp清单:

<provider
    android:authorities="com.mycompany.myProviderApp"
    android:name="com.mycompany.myProviderApp.ContentProviderForMyOtherApps"
    android:exported="true"/>
Run Code Online (Sandbox Code Playgroud)

我还使用在ProviderApp中返回字符串的基本方法实现了一个dummy ContentProvider(ContentProviderForMyOtherApps):query

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    String[] cols = {"column1"};
    MatrixCursor cursor = new MatrixCursor(cols);
    MatrixCursor.RowBuilder builder = cursor.newRow();
    builder.add("HELLO!");
    return cursor;
}
Run Code Online (Sandbox Code Playgroud)

App ClientApp代码:

Cursor cursor = getContentResolver().query(Uri.parse("content://com.mycompany.myProviderApp"),null,null,null,null);
cursor.moveToFirst();
Log.d(TAG, cursor.getString(0)); // output: HELLO!
Run Code Online (Sandbox Code Playgroud)

好的,所以一切正常,ClientApp成功访问提供程序.

但根据以下摘录,我对文档的理解是ClientApp应该被拒绝访问提供者,因为:

  • ProviderApp明显没有android:readPermissionprovider(如com.mycompany.myProviderApp.READ)
  • ClientApp清单没有匹配uses-permission …

android android-contentprovider android-permissions

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

lint 错误“调用需要 API 级别 24”,而脱糖已正确配置为使用 Java 8 功能

我的应用程序有minSDKVersion 16.

\n

我已按照文档添加了以下几行到我的 build.gradle 中,以便使用一些“Java 8 语言 API,而不需要最低 API 级别”:

\n
android {\n    compileOptions {\n            coreLibraryDesugaringEnabled true\n    }\n}\n\ndependencies {\n    coreLibraryDesugaring \'com.android.tools:desugar_jdk_libs:1.1.5\'\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这按预期工作,并且以下代码在 API 16 模拟器上运行时不会崩溃:

\n
ArrayList<String> arr = new ArrayList<>();\narr.add("hello");\n// \xe2\x86\x93 this is a Java 8 API and crashes on API 16 if coreLibraryDesugaringEnabled=false\narr.removeIf(s -> true); \n
Run Code Online (Sandbox Code Playgroud)\n

现在,问题是 lint 在这一行显示错误:\nCall requires API level 24 (current min is 16): java.util.ArrayList#removeIf

\n

棉绒错误

\n

如何修复 Android Studio/lint 的错误行为?

\n

我不想抑制该错误,因为它在实际上合法时可能很有用。

\n

java android lint android-studio

6
推荐指数
0
解决办法
1027
查看次数

Android:我可以阻止Java类(来自外部库)在运行时实例化

上下文:

我使用AdMob中介在我的应用中显示横幅广告.我集成了Millennial广告网络SDK和Millennial AdMob适配器.

问题:我的应用支持Android API 9+,而Millennial SDK支持API 16+.更糟糕的是,SDK没有优雅地失败(没有向AdMob中介层返回任何广告,以便它可以继续沿着中介瀑布走下去),SDK在运行Android <16(Fatal Exception: java.lang.NoSuchMethodError android.webkit.WebSettings.setAllowUniversalAccessFromFileURLs)的设备上崩溃

显然千禧一代开发人员并不打算解决这个问题,他们建议发布2个不同的APK("<16"没有他们的SDK和"16+"他们的SDK),这是一个麻烦的解决方案.

我更喜欢更简单的解决方案:在运行Android API <16的设备上,我想重现AdMob适配器丢失时会发生的情况:AdMob中介只会转到下一个网络.这意味着在我实例化AdMod中介横幅之前卸载或删除 Millennial适配器类.

问题:

有没有办法在运行时阻止给定类(来自第三方库)的任何未来瞬间?(例如,通过强制ClassNotFound异常)

java android admob

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

由于UTF-8 BOM(字节顺序标记)未找到Shebang可执行文件

出于某种原因,我的一个脚本中的shebang不起作用:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Hello World"
Run Code Online (Sandbox Code Playgroud)

当我执行此文件时,出现错误

 % ./test.py
./test.py: 1: #!/usr/bin/env: not found
Run Code Online (Sandbox Code Playgroud)

有一个与我的内容没有问题的/usr/bin/目录:既envpython在那里,用正确的执行权.

python bash

4
推荐指数
2
解决办法
5761
查看次数

导入Android示例项目时修复Gradle不兼容问题

Android Studio(0.5.3)让我发疯.

我从未遇到过Eclipse和ADT的任何严重问题.Android Studio是另一个故事:我无法使用它来正确构建单个项目.

所以,我正在尝试导入一个Android示例项目(我认为它具有正确的Gradle设置并且应该准备好导入):

C:\pathToMyAndroidSDK\sdk\samples\android-19\content\StorageProvider
Run Code Online (Sandbox Code Playgroud)

我得到的第一个错误如下:

Failed to refresh Gradle project 'StorageProvider'
The project is using an unsupported version of Gradle. Please use version 1.10.
Please point to a supported Gradle version in the project's Gradle settings or in the project's Gradle wrapper (if applicable.)
Fix Gradle wrapper and re-import project Gradle settings
Run Code Online (Sandbox Code Playgroud)

好的,所以我下载Gradle 1.10,并更改项目Gradle设置,以便它使用此本地Gradle分发而不是默认的gradle包装(它似乎包含在示例项目中).

这次我得到了一个不同的错误:

Failed to refresh Gradle project 'StorageProvider'
The project is using an unsupported version of the Android Gradle plug-in (0.8.3).
Version 0.9.0 …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle android-gradle-plugin

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

在dimensions.xml中使用FILL_PARENT

我的 View宽度必须取决于屏幕宽度:

  • 它必须在小屏幕上填充屏幕(小于600dip宽)
  • 它必须在较大的屏幕上具有固定宽度(600dip)

我希望我可以使用存储在XML文件中的维度:

mylayout.xml:

 <View
   android:layout_height="100dip"
   android:layout_width="@dimen/myview_width"/>
Run Code Online (Sandbox Code Playgroud)

值-sw600dp/dimensions.xml:

    <dimen name="myview_width">600dip</dimen>
Run Code Online (Sandbox Code Playgroud)

值/ dimensions.xml:

    <dimen name="myview_width">FILL_PARENT</dimen> <!-- NOT SUPPORTED -->
Run Code Online (Sandbox Code Playgroud)

...但元素中FILL_PARENT不支持使用dimen.

在XML中实现这一目标的最简洁方法是什么?

xml android android-layout

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

Android Studio:键盘快捷键在当前行显示错误?

我发现显示带下划线的代码错误的唯一方法是用鼠标悬停它。

在此处输入图片说明

实现此目的的快捷键是什么?(当光标在错误的行上时)

android android-studio

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