小编Bri*_*ian的帖子

如何判断用户何时不关注此活动?

我不太确定如何表达这个问题,但我知道这是一个非常容易回答的问题。如何判断用户何时不再参与我希望用户参与的活动。例如,我如何知道用户是否意外按下了 HOME 或者是否接到电话并中断了当前活动?

android android-activity

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

使用 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 获取所有 MotionEvent

我的问题直接针对这个问题。该问题的答案展示了如何创建 a ViewGroup,将其嵌入到 a 中WindowManager,并允许 sWindowManager捕获MotionEvents 通过onTouchEvent(MotionEvent event)。是允许 this接收sWindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH的标志。然而,根据文档,这个标志ViewGroupMotionEvent

...不会收到完整的向下/移动/向上手势

我想知道是否有解决方法或方法,以便我可以获得所有触摸事件,包括向下、移动和向上。概念证明位于应用程序Wave Launcher中,它使用相同的概念,但能够接收多个ACTION_OUTSIDE事件。

flags android action view layoutparams

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

检测屏幕方向从服务变化

一个非常简单明了的问题......服务是否可以检测到屏幕方向的变化?如果是这样,怎么样?

service android screen orientation

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

从服务启动对话框

我想从一个悬停在用户当前正在查看的内容上的服务启动一个对话框.对话框启动如下:service触发打开对话框>启动透明活动>透明活动显示对话框.

我的问题是当用户打开应用程序,启动进入主菜单,然后按HOME离开.按HOME键,主菜单活动暂停,不被破坏,当服务启动对话框时,主菜单显示在透明活动下面; 导致对话框失去悬停在用户正在查看的内容上的影响.

如何才能使透明活动独立于应用程序中的任何其他活动而打开?目前阻止这种情况的唯一方法是在暂停时完成所有活动; 但这是不切实际的.

service android dialog android-activity

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

Google OAuth 登录卡住了加载同意屏幕

我的应用程序使用 Google Drive API 来备份用户文件。我想从头开始测试我的应用程序登录,所以我从我的 Google 帐户设置中手动撤销了该应用程序,但是当我再次登录时,我在选择我的 Google 帐户后卡住了加载同意屏幕(见下文)。

这就是我所拥有的...

  • 发布状态为“测试”,用户类型为“外部”,我添加/使用了正确的测试用户
  • 在 OAuth 2.0 客户端 ID 下注册了我的调试和生产密钥
  • 范围只有“./auth/drive.appdata”和“./auth/drive.file”
  • 域已验证,提供组织网站、支持电子邮件、隐私政策链接和自定义应用程序图标

这是我试过的...

  • 重新安装应用程序并清除数据
  • 等待大约 24 小时
  • 从设备中删除 Google 帐户并重新登录
  • 删除并重新上传我的调试 SHA-1 密钥
  • 禁用和重新启用整个 Google Drive API
  • 使用以前从未与我的应用程序一起使用过的其他 Google 帐户(让我认为这是 Google 的事情)
  • 使用不同的测试设备(模拟器+物理设备)
  • 从已知良好的时间检出旧代码分支(换句话说,登录代码是相同的)

我再次强调,这个登录和 OAuth 流程以前是有效的(尽管显示“未经验证”的应用程序的同意屏幕,因为它仍在开发中)。我没有更改任何范围,也没有重新配置 OAuth 同意屏幕。

有没有人对在这里尝试的其他事情有任何建议?鉴于这以前有效,我不确定我还可以从 Google API 仪表板更改什么。

我知道我的问题与之前提出的问题非常相似,但是在这种情况下,显然使用不同的帐户最终可以工作 - 对我而言并非如此。

OAuth 屏幕不加载同意屏幕

android oauth google-api google-authentication google-signin

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

如何检测字符键按?

我知道在TextView中按下ENTER按钮时如何监听,如下面的代码所示:

textView.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
            if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                enterPressed();
                return true;
            }
            return false;
        }
});
Run Code Online (Sandbox Code Playgroud)

但是...当按下一个字符键(AZ,0-9,特殊字符等),基本上除了ENTER,BACKSPACE或SPACE之外的所有其他内容时,我该如何监听?我想这样做是因为我希望当用户开始在TextView中键入文本时启用一个按钮.奇怪的是,当按下这些字符键时,甚至没有调用onKey()方法,那么我还有另一种方法可以听取它们吗?提前致谢!

android key keyevent listener textview

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

获取SQLite数据库并将其存储在对象数组中

我正在查看Android SDK中的Notes应用示例.我想要学习的是不是使用CursorAdapter来传递给ListAdpater/ListView进行整理,我想知道自己如何处理数据; 特别是在ArrayList表单中.在示例中,注释基本上具有id,title和body.我想知道如何查询SQLite数据库并使用它返回的游标来收集数据并创建一个对象的对象实例,我将其称为Note,其中包含id,title和body的参数.我最终希望将所有这些对象存储到ArrayList中进行管理.我只是不确定如何处理Cursor.这是一个非常普遍的问题,但我只需要有人指出我正确的方向.

sqlite android arraylist object cursor

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

无法在通知中添加额外内容

我正在从具有额外整数意图的服务创建通知.出于某种原因,这并不像看起来那么容易.这就是我正在做的事情:

Notification notification = new Notification(R.drawable.notification_icon, "Title", 0);
Intent relaunchIntent = new Intent(this, SomeClass.class);
relaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
relaunchIntent.putExtra("load", getId());
notification.setLatestEventInfo(this, "Title", "Tap here to open", PendingIntent.getActivity(this, 0, relaunchIntent, 0);
notificationManager.notify(1234, notification);
Run Code Online (Sandbox Code Playgroud)

然后从SomeClass,它读起来像这样......

if(getIntent().getExtras() != null)
    load(getIntent().getExtras().getInt("load", -1));
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我从getInt()方法中读取值时,我得到了不一致的结果.有时我会得到我在之前的通知中设置的值的值.例如,当我将额外设置为4时,我得到值为3.我知道这非常令人困惑和奇怪,这就是为什么我想知道是否有人经历过这样的事情以及你可能做了些什么来修复它.谢谢!

service notifications android android-intent extra

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

onMeasure被称为1500多次

我最近发现我的应用程序出现了严重的性能问题.我基本上有以下布局...... 在此输入图像描述

描述
简而言之,有一个ViewPager持有3 RelativeLayout秒作为页面.每个页面里面都有一些TextViews.我最近注意到当我输入EditText有一个延迟TextWatcher来执行快速SQL查询以进行自动完成时会出现很多延迟.当我输入文本时,我的HTC One M8口吃和滞后,但我知道这不是查询速度慢,因为我测量的查询只花了大约7毫秒.

我使用了方法分析,Systrace和简单的旧Log调试,并得出结论,每次我在A,B和C 内的s 上进行EditText约1,700次调用时输入一个字符.累计,只有大约15个独立的s页面.我注意到每个都被调用了数百次而不是像往常一样被调用一次或两次.onMeasureTextViewRelativeLayoutTextViewonMeasure

问题
我不知道为什么EditText在页面B中键入会导致TextView页面A和C中的其他s也被"重新测量".更重要的是,是否有人对如何onMeasure经常被召唤的原因有所了解?并且,有没有人知道一个显着减少呼叫次数的解决方案onMeasure?

详情
这可能有所帮助:我实际上能够onMeasure通过删除RelativeLayout2 来减少大约900 的呼叫次数,这可能表明onMeasure呼叫的传播开始于ViewPager.

android textview android-layout android-viewpager onmeasure

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

在 AndroidManifest 中有条件地声明服务

我有一项服务,尤其是 Android Daydream DreamService,已在我的AndroidManifest.xml文件中声明。当我的应用加载时,Android 检测到此声明并将我的应用作为选项添加到用户可以在其设置中选择的 Daydreams 列表。我声明Service如下...

<service android:name=".daydream.DaydreamService" android:exported="true"
        android:icon="@drawable/icon" android:label="@string/app_name" >
   <intent-filter>
        <action android:name="android.service.dreams.DreamService" />
        <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>

   <meta-data
        android:name="android.service.dream"
        android:resource="@xml/daydream" />

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

我想看看是否有一种方法可以有条件地以Service编程方式加载此声明。换句话说,我只想根据一些程序逻辑来声明这一点DreamService。我不希望 Android 列出或什至知道我的应用程序的 Daydream 功能,除非我以编程方式启用它。

这样的事情可能吗?

service android manifest dreamservice daydream

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