小编Stu*_*ing的帖子

提供的Gradle依赖性是AAR而不是JAR

我有一个问题,我试图在我的项目中包含一个名为the的库ParseLoginUI.

问题是它使用提供的标记而不是编译.我相信提供的标记意味着项目需要提供这种依赖,以便库工作,而不是这个库编译库本身.

所以在我的Android库中,它像这样引用了Facebook SDK.

 provided 'com.facebook.android:facebook-android-sdk:4.0.1'
Run Code Online (Sandbox Code Playgroud)

然后在我的主要模块mobile/build.gradle中编译Facebook sdks就像这样.

compile 'com.facebook.android:facebook-android-sdk:4.0.1'
Run Code Online (Sandbox Code Playgroud)

我一直在关注安装此库的指南,这就是你的意思.这是我得到的警告,阻止我从ParseLoginUI/build.gradle文件抛出的编译(提供它的那个).

Warning:Project ParseLoginUI: provided dependencies can only be jars. com.facebook.android:facebook-android-sdk:aar:4.0.1 is an Android Library.
Run Code Online (Sandbox Code Playgroud)

该库的文档有一个修复:

如果您使用的是gradle 1.1.0或更高版本,则可能会遇到"警告:Project ParseLoginUI:提供的依赖项只能是jar.com.facebook.android:facebook-android-sdk:aar:4.0.1是Android库".这是一个开放的android gradle构建工具问题.目前workround使用的是gradle 1.0.0.

很公平,但我不想降级我的gradle(目前正在运行v1.2.3)只是为了解决这个问题.必须有一种解决方法或更好的方法.

我的问题

如何在库模块和主模块中包含Facebook SDK?

android gradle parse-platform build.gradle android-gradle-plugin

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

XMLHttpRequest发布HTML表单

当前设置

我有一个像这样的HTML表单.

<form id="demo-form" action="POST" method="post-handler.php">
   <input type="text" name="name" value="previousValue"/>
   <button type="submit" name="action" value="dosomething">Update</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我可能在页面上有很多这些表单.

我的问题

如何异步提交此表单而不是重定向或刷新页面?我知道怎么用XMLHttpRequest.我遇到的问题是在javascript中从HTML中检索数据然后放入一个post请求字符串.这是我目前用于zXMLHttpRequest`的方法.

function getHttpRequest() {
    var xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    return xmlhttp;
}

function demoRequest() {
       var request = getHttpRequest();
       request.onreadystatechange=function() {
             if (request.readyState == 4 && request.status == 200) {
                   console.log("Response Received");
             }
       }
       request.open("POST","post-handler.php",true);
       request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
       request.send("action=dosomething");
}
Run Code Online (Sandbox Code Playgroud)

例如,假设在demoRequest()单击表单的提交按钮时调用了javascript方法,如何从此方法访问表单的值,然后将其添加到XMLHttpRequest …

javascript forms ajax xmlhttprequest http-post

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

查找Android Facebook SDK版本是什么

如何找出我的应用程序安装或引用当前SDK的版本?我查看了类文件和清单,但没有关于它是什么版本的参考.

提前致谢.

facebook facebook-android-sdk

19
推荐指数
2
解决办法
6955
查看次数

在ConstraintLayout中使用minHeight查看

我有一个ConstraintLayout内部NestedScrollView.在ConstraintLayout包含了一堆的意见,但最后View能有一个动态的高度,填补了底部空间,当且仅当有什么,但它也需要一个最小高度,如果没有足够的空间.

为了论证,这是一个例子.

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <android.support.constraint.ConstraintLayout       
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout_height="match_parent">

        <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintHeight_min="1500dp"
            android:background="@color/red"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"  
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

    </android.support.constraint.ConstraintLayout>


</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已将该ConstraintLayout版本放入,但它不起作用.显然,这些值非常大,但这只是用于测试.

如果我不设置fillViewport="true"NestedScrollViewConstraintLayout具有0高度时,我设置的fillViewport,在ConstraintLayout不滚动,但只是充满屏幕.

如何设置View以使其扩展到ConstraintLayout应该与Viewport一样大的底部,但如果我的View不是minHeight那么我们允许滚动?

我正在使用1.0.2ConstraintLayout库的版本.

我期望看到的是一直到父母的底部,但如果那个大小小于1500dp那么视图滚动.

我已经输入1500dp android:layout_height="1500dp",视图会相应滚动.

更新1

似乎是我把布局放在一个FragmentViewPager.该app:layout_constraintHeight_min属性不受尊重,只与视口的高度匹配.

我也尝试NestedScrollView从片段中取出并将其ViewPager放入其中但是再次无效.

android android-constraintlayout

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

定向改变后片段无法正常工作

我遇到问题Fragments和方向改变.

我有一个应用程序,MainActivityFragments通过选项卡式操作栏处理切换.以下是选项卡式操作栏的代码以及选择选项卡的时间.

private class MyTabListener <T extends android.support.v4.app.Fragment> implements ActionBar.TabListener {
    private android.support.v4.app.Fragment mFragment;
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;

    public MyTabListener(SherlockFragmentActivity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
    }

    @Override
    public void onTabSelected(Tab tab, android.support.v4.app.FragmentTransaction ft) {
        if (mFragment == null){ // check to see if the fragment has already been initialised. If not create a new one.
            mFragment …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

计时器在Android中没有停止

问题 我在android中开发时停止Timer有问题.

在停止计时器时,计时器已经为空.

然后我将定时器初始化移动到方法之外,就像TimerTask一样,它解决了null问题,但是在timer.cancel();调用它时仍然没有取消.

下面的代码是计时器在停止录制时已经为空的示例.

的TimerTask

TimerTask在课堂内初始化,但在方法和下面的代码之外......

private TimerTask task = new TimerTask() {
    @Override
    public void run() {
      Log.e("TRACK_RECORDING_SERVICE","Timer Running");
    }
  };
Run Code Online (Sandbox Code Playgroud)

定时器和定时器启动

然后我有一个startRecroding方法,当我想启动计时器时调用它...

public void startRecording(){
     timer = new Timer("Message Timer");
     timer.scheduleAtFixedRate(this.task, 0, 1000);
 }
Run Code Online (Sandbox Code Playgroud)

定时器停止

我想在停止计时器时调用下面的方法......

public void stopRecording() {
     if (timer != null) {
         timer.cancel();
         timer = null;
     } else {
         Log.e("TRACK_RECORDING_SERVICE","Timer already null.");
     }
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

android

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

在Android Studio中包含Java模块作为依赖项时错误的Java编译器

我的Android Studio项目中有一个java模块,它是Android模块的依赖项.我在构建时出现问题,出现以下异常.

Error:Execution failed for task ':myApplication:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Applications/Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --output ~/myapplication-app-android/dev/biketracks-app-android/bikeTracks/build/intermediates/pre-dexed/debug/coreUtilities-6ee7e0aafa5a6db72b2acb078f065e51c43124c2.jar ~/myapplication-app-android/dev/myapplication-app-android/libs/coreUtilities/build/libs/coreUtilities.jar
  Error Code:
    1
  Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:665)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
        at com.android.dx.command.dexer.Main.access$600(Main.java:78)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:596)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
        at com.android.dx.command.dexer.Main.run(Main.java:230)
        at com.android.dx.command.dexer.Main.main(Main.java:199)
        at com.android.dx.command.Main.main(Main.java:103)
    ...while parsing com/corecoders/coreutilities/GPSUtils.class
    1 error; aborting
Run Code Online (Sandbox Code Playgroud)

经过一些阅读后,我可以看到它与Android Studio正在使用的Java编译器有关.但是我看不到改变它使用的编译器的方法.

我试图在我的Android模块中包含的Java模块是我使用Android Studio通过文件>新模块> Java模块创建的模块,所以我看不到任何我可以做出选择的选项? …

java android android-studio

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

如何提高Android Studio应用程序构建的速度?

有没有办法显示我的构建过程是哪一个花费最多的时间,然后尝试解决它?

我正在使用Android Studio.我现在不会把我的项目称为大项目,但我想我需要的依赖项使它变大,构建仍需要40-60秒.(从删除多dex之前的90秒开始)

这是我的2015年中期Macbook Pro的规格:

  • 处理器:2.5 GHz Intel Core i7
  • 内存:16GB 1600 MHz DDR3

我不得不删除部分依赖项,以便能够在不启用多dex支持的情况下构建,这节省了我~20秒,但是我想添加更多依赖项,所以我需要改进构建时间,以便我可以重新启用多个dex并实际使用我想要的依赖项.

我看过一些关于修改Android Studio以加快构建时间的帖子,但这些似乎没有用,我宁愿看看能不能解决问题.

这是我当前的依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

// MY INTERNAL LIBRARIES
    wearApp project(':wear')
    compile project(':ViewPagerIndicator')
    compile project(':connection-manager')
    compile project(':core-library')
    compile project(':activity-manager')
    compile project(':activity-recorder')

    compile 'com.google.android.gms:play-services-maps:7.5.0'
    compile 'com.google.android.gms:play-services-wearable:7.5.0'
    compile 'com.google.android.gms:play-services-location:7.5.0'

    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.android.support:cardview-v7:22.2.1'
    compile 'com.android.support:recyclerview-v7:22.2.1'
    compile 'com.android.support:support-annotations:22.2.1'

    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'joda-time:joda-time:2.7'
    compile 'com.androidplot:androidplot-core:0.6.1'

    compile project(':ParseLoginUI')

    /*Images*/
    compile 'com.squareup.picasso:picasso:2.3.3'
    compile 'com.makeramen:roundedimageview:2.1.0' // https://github.com/vinc3m1/RoundedImageView
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'io.reactivex:rxandroid:1.0.1'

//    apt …
Run Code Online (Sandbox Code Playgroud)

android android-studio

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

Intent FLAG_GRANT_READ_URI_PERMISSION在Gingerbread中使用FileProvider

我有一个问题,我正在尝试将多个文件从我的内部存储附加到电子邮件意图,方法是使用我的清单中声明的​​FileProvider并授予读取uri权限.这是我的代码.

表现

         <provider 
             android:name="android.support.v4.content.FileProvider"
             android:authorities="com.company.example.logprovider"
             android:exported="false"
             android:grantUriPermissions="true">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/provider_paths"/>
         </provider> 
Run Code Online (Sandbox Code Playgroud)

意图创造

        emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
        emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] {"randomemailaddress"});

    ArrayList<Uri> uris = new ArrayList<Uri>();
    File directory = getFilesDir();
    File[] list = directory.listFiles();
    for (File f : list) {
        if (f.getName().contains("log") && f.getName().contains(".txt"))
            uris.add(FileProvider.getUriForFile(this, "com.company.example.logprovider",f));
    }

    emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
Run Code Online (Sandbox Code Playgroud)

问题

这适用于运行Jelly Bean的两台设备,但它不适用于运行姜饼的两台设备.

我得到的例外情况如下.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.gm/com.google.android.gm.ComposeActivity}: java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{40b2db08 3885:com.google.android.gm/10110} (pid=3885, uid=10110) requires null or null
E/AndroidRuntime( 3885):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
E/AndroidRuntime( 3885):    at …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-permissions

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

Proguard和RxAndroid V1.1.0

我似乎无法让Proguard使用RxAndroid v1.1.0库.

以前我一直在使用v1.0.1,这适用于以下规则.

-dontwarn rx.internal.util.unsafe.**
Run Code Online (Sandbox Code Playgroud)

但是在升级到rxAndroid的v1.1.0并且还包括在Github ReadMe.txt上说的RxJava之后,每当我在代码中使用RxAndroid时,我都会遇到此异常.

Caused by: java.lang.NoSuchFieldException: producerIndex
Run Code Online (Sandbox Code Playgroud)

所以我添加了更多Proguard规则,就像人们在Github的一些问题报告中所说的那样.

-keep class rx.schedulers.Schedulers {
    public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
    public <methods>;
}
-keep class rx.schedulers.TestScheduler {
    public <methods>;
}
-keep class rx.schedulers.Schedulers {
    public static ** test();
}
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    long producerNode;
    long consumerNode;
}

-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

-dontwarn rx.internal.util.unsafe.**
Run Code Online (Sandbox Code Playgroud)

这不起作用,我在生成发布版本时不断遇到崩溃.任何想法,因为我想使用最新的库.

android rx-java rx-android

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