小编And*_*rew的帖子

Gradle构建空控制台对象

我正在尝试让我的gradle构建使用堆栈溢出中的示例在控制台提示输入密码

当我有一个例如:

def password = System.console().readLine("Enter keystore password ")
Run Code Online (Sandbox Code Playgroud)

当我跑步时,我得到了错误

Cannot invoke method readLine() on null object
Run Code Online (Sandbox Code Playgroud)

似乎控制台出现了null.我读过这个需要java 6,如果我进入命令提示符并键入java -version我正在运行Java(TM)SE运行时环境(版本1.6.0_27-b07).

在Gradle的Github存储库中正在跟踪此问题:无法使用带有Gradle守护程序的System.console().

gradle build.gradle android-gradle-plugin

42
推荐指数
6
解决办法
2万
查看次数

Android:如何检查是否启用了特定的AccessibilityService

我写过一个需要使用的Android应用程序AccessibilityService.我知道如何检查手机上是否启用了辅助功能,但我无法确定是否已在辅助功能菜单中专门启用了我的应用.

我想提示用户是否AccessibilityService没有运行,但找不到这样做的好方法.是否有任何我可能遗漏的API方法可以让我知道设备上启用了哪些辅助功能服务?

android accessibility-api

39
推荐指数
4
解决办法
3万
查看次数

Android字符串数组语言环境验证

我想知道是否有人遇到过在res/values目录中验证字符串数组的好方法.

我使用默认语言环境通过代码创建,并且可能具有类似的资源

<string-array name="array_example1">
    <item>One</item>
    <item>Two</item>
    <item>Three</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

然后,当应用程序的翻译人员进行翻译时,他们也会创建一个字符串数组.有时,如果一个翻译落后于另一个资源文件,则阵列中的条目可能不多(可能只有上述示例中的"一个"和"两个")

有没有简单的方法来验证条目数是否不匹配?不匹配可能会导致代码出现问题,但由于应用程序有多种语言的10个字符串数组,因此检查它们是否匹配非常耗时.

其他人对此有何看法?

android locale

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

ProxyHTML重写URL

我已经设置了2个apache服务器.一个在端口80上,另一个在端口8077上.我想通过反向代理在8077上查看服务器上的所有内容.目前我有:

ProxyPreserveHost Off
ProxyHTMLInterp On
ProxyPass /translate/ http://www.example.com:8077/
ProxyPassReverse /translate/ http://www.example.com:8077/
ProxyHTMLURLMap / /translate/
Run Code Online (Sandbox Code Playgroud)

这允许我到达网站的初始页面,但图像,CSS和其他页面的链接不起作用.

例如,html中的css显示为

/css/style.css
Run Code Online (Sandbox Code Playgroud)

我真正希望它在哪里

/translate/css/style.css
Run Code Online (Sandbox Code Playgroud)

它从8077服务器获取文件.如何使用当前设置才能使其正常工作?

apache reverse-proxy apache2 mod-proxy-html

22
推荐指数
1
解决办法
3万
查看次数

在没有合格用户错误的情况下调用系统进程中的方法

我在android 4.4中使用通知监听器服务,我遇到一个错误,导致我的应用程序停止发布通知.

这是相当随机的,但当它发生时,我看到:

12-31 01:40:44.080  21680-21680/? W/ContextImpl? Calling a method in the system process without a qualified user: 
android.app.ContextImpl.sendOrderedBroadcast:1192 
android.app.ContextImpl.sendOrderedBroadcast:1183       
android.content.ContextWrapper.sendOrderedBroadcast:390 
com.android.settings.applications.ProcessStatsDetail.checkForceStop:314 
com.android.settings.applications.ProcessStatsDetail.onResume:108
Run Code Online (Sandbox Code Playgroud)

在日志中.我甚至可以通过在手机上输入开发者工具的"过程统计数据"部分来重新创建它.一旦我选择了一个使用通知监听器的应用程序,就会发出此警告并取消绑定并销毁该服务,并且当它重新创建时,它并不总是会再次接收事件.

我不确定为什么会发生这种情况,任何人都可以解雇吗?

android android-framework

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

升级到SDK 21 - 错误膨胀类android.support.v7.internal.widget.ActionBarContainer

我正在尝试将我的应用从API19升级到API21

我对gradle属性所做的主要更改是:

compileSdkVersion 21
buildToolsVersion "21.0.2"

minSdkVersion 8
targetSdkVersion 21


compile 'com.android.support:appcompat-v7:21.0.0'
Run Code Online (Sandbox Code Playgroud)

该应用程序构建正常,但我总是收到以下错误:

10-22 23:10:38.867    7972-8058/com.example.android.demo E/ACRA? com.example.android.demo fatal error : Unable to start activity ComponentInfo{com.example.android.demo/com.example.android.demo.MainActivity2}: android.view.InflateException: Binary XML file line #27: Error inflating class android.support.v7.internal.widget.ActionBarContainer
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.demo/com.example.android.demo.MainActivity2}: android.view.InflateException: Binary XML file line #27: Error inflating class android.support.v7.internal.widget.ActionBarContainer
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: android.view.InflateException: Binary XML …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar android-actionbar-compat android-5.0-lollipop

16
推荐指数
3
解决办法
9552
查看次数

无法启动Android MediaPlayer onCompletion

我正在尝试使用android MediaPlayer类播放一些声音.

这是代码

MediaPlayer mp = new MediaPlayer(); 
mp.setDataSource(context, Uri.parse(soundUrl)); 
mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mp.setLooping(false); 
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
            public void onCompletion(MediaPlayer mp) { 
                Log.i(LOGTAG, "onComplete hit"); 
                mp.stop(); 
                mp.release(); 
            } 
    });         

mp.prepare(); 
mp.start();
Run Code Online (Sandbox Code Playgroud)

此代码在服务中运行,但由于某种原因,声音播放正常,但放入onCompletion的任何内容似乎都没有触发.然后我在logcat中收到媒体播放器未发布的消息.我对这个问题感到茫然.

我在galaxy nexus 4.0.4 stock rom上运行这个测试.

我还注意到声音最后会被剪掉.

android android-mediaplayer

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

尝试获取安装的应用程序列表时的TransactionTooLargeEception

作为我的应用程序的一部分,我通过使用ApplicationPackageManager.getInstalledApplications获得设备上安装的应用程序列表,但对于某些用户,我得到崩溃报告说

android.osBinderProxy.tranasact上的TransactionTooLargeException(本机方法)

谁能想到我为什么会这样?

android

12
推荐指数
2
解决办法
8754
查看次数

SecurityException:Permission Denial错误

我刚刚升级到新版本的gmail(v2.3.5),我有一个应用程序查询内容提供商,以获取有关收到消息的联系人的详细信息......

使用最新版本我收到以下错误:

java.lang.SecurityException:Permission Denial:从ProcessRecord打开提供程序com.google.android.gm.provider.MailProvider {40adef58 3576:com.rageconsulting.android.lightflow/10056}(pid = 3576,uid = 10056)需要com. google.android.gm.permission.READ_GMAIL或com.google.android.gm.permission.WRITE_GMAIL`

对于我的清单中的gmail,我声明了以下内容:

<!--permissions for gmail-->
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.providers.gmail.permission.READ_GMAIL"/>
<uses-permission android:name="com.google.android.gm.permission.READ_GMAIL"/>
<uses-permission android:name="com.google.android.gm.permission.WRITE_GMAIL"/>
Run Code Online (Sandbox Code Playgroud)

所以据我所知,我的权限是正确的.

我的gmail接收器如下所示:

    <receiver android:name=".receiver.GmailReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PROVIDER_CHANGED" android:priority="-10">
            </action>
            <data android:scheme="content" android:host="gmail-ls" android:pathPattern="/unread/.*">
            </data>
        </intent-filter>


        <intent-filter>
            <action android:name="android.intent.action.PROVIDER_CHANGED" android:priority="-10">
            </action>
            <data android:mimeType="*/*" android:scheme="content" android:host="gmail-ls" android:path="/unread/^i">
            </data>
        </intent-filter>

    </receiver>
Run Code Online (Sandbox Code Playgroud)

谁能想到我可能错过的东西?

android android-contentprovider

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

Android,播放parcelable数据

我已经实现了一个扩展NotificationListenerService的类,它适用于拾取已发布的通知.

我当时想要接收statusBarNotification对象并广播它.

我会做以下事情:

@Override
public void onNotificationPosted(StatusBarNotification statusBarNotification) {

    Intent intent = new Intent();
    intent.putExtra("STATUS_BAR_NOTIFICATION",statusBarNotification);
    intent.setAction("com.example.NotificationPosted");
    sendBroadcast(intent);
}
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我收到以下错误:

01-05 01:50:14.333  19574-19673/com.example W/NotificationListenerService[NotificationListener]? Error running onNotificationPosted
java.lang.RuntimeException: Not allowed to write file descriptors here
        at android.os.Parcel.nativeAppendFrom(Native Method)
        at android.os.Parcel.appendFrom(Parcel.java:431)
        at android.os.Bundle.writeToParcel(Bundle.java:1679)
        at android.os.Parcel.writeBundle(Parcel.java:636)
        at android.app.Notification.writeToParcel(Notification.java:962)
        at android.service.notification.StatusBarNotification.writeToParcel(StatusBarNotification.java:106)
        at android.os.Parcel.writeParcelable(Parcel.java:1285)
        at android.os.Parcel.writeValue(Parcel.java:1204)
        at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
        at android.os.Bundle.writeToParcel(Bundle.java:1692)
        at android.os.Parcel.writeBundle(Parcel.java:636)
        at android.content.Intent.writeToParcel(Intent.java:7013)
        at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:2361)
        at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1127)
        at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:365)
        at com.example.NotificationListener.onNotificationPosted(NotificationListener.java:113)
        at android.service.notification.NotificationListenerService$INotificationListenerWrapper.onNotificationPosted(NotificationListenerService.java:168)
        at android.service.notification.INotificationListener$Stub.onTransact(INotificationListener.java:56)
        at android.os.Binder.execTransact(Binder.java:404)
        at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到我做错了什么,或者这是不可能的.StatusBarNotification实现Parcelable

android android-intent android-notifications android-broadcast

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