小编Bil*_*ote的帖子

无法找到清单定义的接收器〜1%的时间

我有一个@AAR需要在使用应用程序的清单中输入一个条目.在我的库的引导期间,我检查AndroidManifest.xml所需的接收器,如果我找不到它,我扔了一个,RuntimeException因为我的库将无法正常工作.这适用于99%的安装,但是RuntimeException当接收器明显存在时,会有少量安装.

Android v4.4 - v5.1.1都包含在崩溃报告中.三星,联想,Nexus 4,Nexus 5等都是受影响的设备.

最有趣的线索是,大约75%的崩溃是在root设备上.据推测,这是一些自定义ROM或其他一些干扰接收器检测的应用程序的结果.

我已经测试了一个带根的Nexus 5 w/4.4.4并且它工作正常.我用Nexus 5 w/5.1.1进行了测试,它运行正常.我已经使用运行CyanogenMod 12.1(最新版本)的Nexus 5进行了测试,它运行正常.我应用了所有可用的Privacy Guard选项,它仍然可以正常工作.

真的不知所措,不想放弃受影响的用户.

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <permission
        android:name="${applicationId}.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <application>
        <receiver
            android:name="com.example.MyBroadcastReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="${applicationId}" />
            </intent-filter>
        </receiver>
        <!-- Activities, etc. removed for brevity -->
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

public class CheckSetup {

        // Other methods removed for brevity

    public void checkManifest() { …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-manifest

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

什么进入源代码管理?

鉴于:http://developer.android.com/resources/faq/commontasks.html#filelist

  1. 使项目进入源代码管理的最佳实践是什么?我问,因为如果您只是右键单击您的项目,选择团队等,您最终会得到/ bin&/ gen文件夹,.classpath以及所有与Eclipse相关的项目.
  2. 如果我用.../workspace/projectName等继承项目.包括如何清理它只包括与上述URL相关的项目?

subclipse svn version-control android

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

SVN:忽略操作方法和操作方法?

在我看来,在.classpath等文件中添加属性svn:ignore是个好主意.我同时使用Windows(work,ugh)和Linux开发环境,每次与存储库同步时,它都会覆盖我正在处理的任何一台机器上的.classpath.

我尝试在Team Sync透视图中右键单击.classpath文件,但svn:ignore选项显示为灰色.

任何想法我可能:1.从源代码控制中获取此项,2.将其添加到忽略列表?

任何其他文件智能添加到此列表?

subclipse svn classpath svnignore heterogeneous

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

对于AlertDialog.Builder类型,方法getWindow()未定义

Android获取的想法:从对话框模糊和调暗背景窗口.我无法将对话框下的内容弄糊涂.调用eula.getWindow()时收到此错误:

对于AlertDialog.Builder类型,方法getWindow()未定义

eula与主要活动的代码一起显示:

    EulaHelper.showEula(false, this);
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

    public static void showEula(final boolean accepted, final FragmentActivity activity) {
    AlertDialog.Builder eula = new AlertDialog.Builder(activity)
            .setTitle(R.string.eula_title)
            .setIcon(android.R.drawable.ic_dialog_info)
                .setMessage(activity.getString(R.raw.eula))
            .setCancelable(accepted);

    if (accepted) {
        // If they've accepted the EULA allow, show an OK to dismiss.
        eula.setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
    } else {
        // If they haven't accepted the EULA allow, show accept/decline buttons and exit on
        // decline.
        eula
                .setPositiveButton(R.string.accept,
                        new …
Run Code Online (Sandbox Code Playgroud)

java android blur android-alertdialog

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

将现有的Android项目导入Eclipse

将现有Android项目导入Eclipse时,project.properties的更新不正确.此文件存在于源代码管理中:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=Google Inc.:Google APIs:14
Run Code Online (Sandbox Code Playgroud)

导入项目(并执行NOTHING else)后,文件如下所示:

# This file is automatically generated by Android Tools.
# Do not modify …
Run Code Online (Sandbox Code Playgroud)

eclipse android

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

主题依赖的Android字符串

假设我有2个主题的应用程序:男性化和女性化.主题只是改变了调色板和一些drawables,以吸引用户的首选品味.

非常感谢http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html提供了他的工作提示.

但现在让我们说我希望得到一个有点可爱的应用程序,不仅改变颜色和drawables,但我也想改变字符串.例如,我可能想要添加一个盗版主题,然后"提交"将是"Arrrrgh!"

所以,我的基本问题是:如何通过用户可选择的主题更改我的应用程序中的字符串?

编辑:

做到这一点:该应用程序有12个按钮和32个文本视图我想要主题依赖,我想在没有巨型映射或大量定制attrs的情况下完成此操作.

所有3种当前解决方案都可以使用.寻找更干净的东西虽然我不知道这样的野兽存在.

string resources customization android themes

8
推荐指数
2
解决办法
967
查看次数

从View的LongPress触发DOWN事件时,从Dialog注册UP/CANCEL

我有一个用户体验要求,用户Dialog通过长按一个单元格来触发GridView.

  • Dialog显示时,用户必须能够在屏幕周围移动他们的手指/拇指而不会UP/CANCEL在他们离开GridView细胞边界时触发事件.

  • 当用户最终断开与屏幕的联系时,我正在寻找捕获.GridView似乎记录了一些误报,UP/CANCEL因为我们没有看到使用任何其他观点.

  • 问题是原始视图会捕获所有触摸事件,因为它DOWN是由它捕获的.

  • 对话框在原始视图的UP事件之后注册/看不到任何触摸.

我试过取消原来的触摸事件并使用dispatchTouch()等等.没有快乐.

有任何想法吗?

android gridview dialog long-press motionevent

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

如何查看使用ADB监控的地理围栏列表?

我正在调试一个位置感知应用程序,我想得到一个当前正由系统监控的Geofences列表 - 即使我只能看到我自己的软件包的Geofences.代码使用的是GoogleApiClient,因此使用了FusedLocation.

我试过adb shell dumpsys location哪个有"Geofences:"的输出部分,但它总是空的.我假设这是遗留位置/地理围栏/邻近.

我也尝试过只adb shell dumpsys搜索该文件以获取地理围栏,但我一无所获.

这两个命令都是在启动应用程序并成功添加要监视的栅栏后运行的.可以在此处找到实现的示例:https://github.com/androidfu/GeofenceExample

android adb geofencing fusedlocationproviderapi

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

禁用HTC噪音消除

我有一个可以读取麦克风的应用程序.特别是我正在检测吹入麦克风;)它不适用于很多HTC设备.我已经选择了HTC Droid Eris以及HTC Droid Incredible.除了那些我有许多朋友的报告,有HTC设备也遇到这个问题,包括相对较新的HTC Thunderbolt.

因此,调试应用程序已经显示环境室噪声在星巴克的4000-11000中记录.一旦我吹入麦克风,输入音量就会下降到4000秒:每次都是.

任何人都知道这是否可以通过编程方式禁用?

这是我如何阅读输入...

    int minBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);
    short[] buffer = new short[minBufferSize];

    audioRecord.startRecording();
    audioRecord.read(buffer, 0, minBufferSize);

    int i = 0;
    for (short sample : buffer) {
        inputVolume = Math.abs(sample);
        maxVolumeIn = (inputVolume > maxVolumeIn) ? inputVolume : maxVolumeIn;
        if (inputVolume >= micSensitivity) {
            Log.d(TAG, "Blowing Detected. Volume Level: " + inputVolume);
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

android microphone htc-android

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

在Windows Phone 8上拦截来自WebView的http请求

有没有办法拦截Windows Phone 8上的http请求?

我有一个PhoneGap应用程序,我想拦截WebView正在做的一些http请求并返回我自己的响应.我正在拦截在Web服务器上请求资产并返回可在本地生成的资产的调用.

在Android中,我可以使用shouldInterceptrequest

在iOS中,我可以使用NSURLProtocol

从我在Windows Phone 8上可以看出,我可以注册我自己的方案来启动我的应用程序,但我不能拦截http请求.有什么东西我错过了吗?

webview cordova windows-phone-8

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