小编MrL*_*ond的帖子

Android - 自定义注释TargetFlavor,如TargetApi,但味道

我目前正在创建一个自定义注释,它可以完成@TargetApi()与我的风格相同的工作.

案子

在我的情况下,我需要使用某种方法(在一个被调用的类中Navigator)将我的应用程序重定向到另一个屏幕,但我只在其中一种风格中创建了这个屏幕.因此,当我切换到另一个Build Variant时,我的Android Studio会显示错误:Unresolved reference正如预期的那样.

我有3种口味:device1,device2device3.还有device1这个独特的屏幕(称为UniqueActivity),所有口味都可以访问Navigator课程.

我看到这样的用例:

@TargetFlavor(currentFlavor = BuildConfig.FLAVOR, targetFlavor = "device1")
Run Code Online (Sandbox Code Playgroud)

(近乎完美)的解决方案

所以我想到预处理器注释忽略方法时所选的味道(通过Build Variant)与目标味道不对应.我跟着这篇文章.

这就是我取得的成就:

TargetFlavor注释:

@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface TargetFlavor {
    String currentFlavor();
    String targetFlavor();
}
Run Code Online (Sandbox Code Playgroud)

TargetFlavorProcessor:

public class TargetFlavorProcessor extends AbstractProcessor {

    private Filer filer;
    private Messager messager;
    private Elements elements;
    private Map<String, Boolean> methodWithFlavor;

    @Override
    public synchronized void init(ProcessingEnvironment processingEnv) {
        super.init(processingEnv);

        filer = …
Run Code Online (Sandbox Code Playgroud)

java android annotations gradle kotlin

8
推荐指数
0
解决办法
300
查看次数

Android等效于/在ActionBarActivity中的getActivity()

就像我的标题所说的那样,我正在寻找getActivity()ActionBarActivity班上相当于我的课程Android project.

我想ActivityAsyncTask声明对象中传递一个参数,因为我Activity在自定义AsyncTask扩展类中使用了一个对象

这是我项目的一个示例最简单的代码

public class EventCreator extends ActionBarActivity {

private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_even_creator);
    View v = getLayoutInflater().inflate(R.layout.activity_even_creator,null);
    this.context = this.getBaseContext();

    final Button createButton = (Button)findViewById(R.id.createEventButton);
    createButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(/* here need activity object */);
            eventCreatorSend.execute();
        }
    });

}

    class SendEvents extends AsyncTask<Void,Void,Boolean> {

        public Activity act;

        SendEvents(Activity a) …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask android-activity android-actionbaractivity

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

Android - 使用Multidexlist转换类进行调试 - Instagram JSON Parser

我正在尝试编译和部署我的Android应用程序,但我遇到了一个MultiDex问题:

Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> java.lang.UnsupportedOperationException (no error message)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多修复,但它们不起作用.

我已经尝试过的:

1. multiDexEnabled是的

2. dexOptions

dexOptions {
    javaMaxHeapSize "4g"
    preDexLibraries = false
}
Run Code Online (Sandbox Code Playgroud)

3.在Android Studio设置中关闭Instant Run

4.重新启动Android Studio和计算机.

5. 清除重建项目.

6. 文件 >使高速缓存/重新启动无效.

7. 编译'com.android.support:multidex:1.0.1' [编辑]

最后重启我的生活,但没有想要的工作..

可以做些什么来解决这个问题?

这是我的Gradle文件

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-android'

android { …
Run Code Online (Sandbox Code Playgroud)

java android android-studio android-gradle-plugin android-multidex

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

Android - Honeywell Dolphin - 如何检测激光扫描仪

我希望从任何从事过霍尼韦尔 Dolphin 设备的人那里得到一些帮助。我正在为多设备开发 Android 条码/二维码扫描应用程序,主要设备是 Dolphin 设备。(例如海豚 70e 黑色)

但是为了获得在所有手机之间完全兼容的应用程序,我想以编程方式检测运行应用程序的设备是否具有带有 android sdk 的激光扫描仪,否则该应用程序使用设备上的相机进行扫描。

我的问题是我没有在网络和霍尼韦尔的文档上找到帮助。

如果有人可以帮助我,那将非常酷!

java android qr-code barcode-scanner honeywell

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