我有一个问题,我试图在我的项目中包含一个名为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
当前设置
我有一个像这样的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 …
如何找出我的应用程序安装或引用当前SDK的版本?我查看了类文件和清单,但没有关于它是什么版本的参考.
提前致谢.
我有一个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"上NestedScrollView则ConstraintLayout具有0高度时,我设置的fillViewport,在ConstraintLayout不滚动,但只是充满屏幕.
如何设置View以使其扩展到ConstraintLayout应该与Viewport一样大的底部,但如果我的View不是minHeight那么我们允许滚动?
我正在使用1.0.2该ConstraintLayout库的版本.
我期望看到的是一直到父母的底部,但如果那个大小小于1500dp那么视图滚动.
我已经输入1500dp android:layout_height="1500dp",视图会相应滚动.
更新1
似乎是我把布局放在一个FragmentViewPager.该app:layout_constraintHeight_min属性不受尊重,只与视口的高度匹配.
我也尝试NestedScrollView从片段中取出并将其ViewPager放入其中但是再次无效.
我遇到问题Fragments和方向改变.
我有一个应用程序,MainActivity它Fragments通过选项卡式操作栏处理切换.以下是选项卡式操作栏的代码以及选择选项卡的时间.
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中开发时停止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 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模块创建的模块,所以我看不到任何我可以做出选择的选项? …
有没有办法显示我的构建过程是哪一个花费最多的时间,然后尝试解决它?
我正在使用Android Studio.我现在不会把我的项目称为大项目,但我想我需要的依赖项使它变大,构建仍需要40-60秒.(从删除多dex之前的90秒开始)
这是我的2015年中期Macbook Pro的规格:
我不得不删除部分依赖项,以便能够在不启用多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) 我有一个问题,我正在尝试将多个文件从我的内部存储附加到电子邮件意图,方法是使用我的清单中声明的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) 我似乎无法让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 ×8
ajax ×1
build.gradle ×1
facebook ×1
forms ×1
gradle ×1
http-post ×1
java ×1
javascript ×1
rx-android ×1
rx-java ×1