小编Dro*_*der的帖子

Android密钥处理(框架)

框架的某些部分对我来说还不是很清楚.我熟悉输入事件的流程(内核 - > Eventhub - > InputReader - > InputDispatcher - > ...).

情况

(要求:在不更改Android框架的情况下处理输入键.) 我想处理来自设备(键盘/游戏手柄/控制器/ ...)的关键事件,但有一些要求.首先,我不想改变Android框架.这意味着,我不想扩展WindowManagerPolicy其功能,例如interceptKeyBeforeDispatching处理主键的功能.这将导致将键事件分派到应用程序层中,这很好.缺点是,我在这里有另一个棘手的要求.示例:当我在玩"愤怒的小鸟"时,我按下连接的输入设备上的GoToAlpha按钮,Alpha应用程序必须启动.愤怒的小鸟不知道哪个按钮GoToAlpha是,不会处理/识别它,并且例如没有广播的意图来启动我的Alpha应用程序.

有没有办法在调度后处理我的(自定义)键事件,知道前台的应用程序无法处理密钥?

我的(失败的)解决方案

  • 创建一个处理关键事件的服务.这是不可能的,因为像愤怒的小鸟这样的应用程序不会绑定到我的服务,并且关键事件不会被我的服务捕获.如果我错了,请提供更多信息:).

  • 创建一个外部库,我允许我的应用程序的活动从我自己的ActivityBase继承.所有关键事件和默认行为都可以在这里处理.在下方,现有应用程序将不支持我的自定义键事件,因为它们不使用库.

  • 扩展框架在我看来是最干净的解决方案,但这将导致不符合我的要求.

任何帮助或有用的信息将不胜感激

额外

如果第一个问题可以通过这种或那种方式解决..我想Intent在GoToAlpha按钮后面自定义我.这意味着..默认情况下,Alpha应用程序将启动,但在用户自定义之后,Beta应用程序将从现在开始启动..有什么想法吗?

谢谢

android key-events android-framework

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

保护Android Intent中的额外数据

我正在使用Intent在新任务中启动一个新的Activity.此Intent在其附加内容中携带该Activity所需的一些私有数据.其他应用程序不应读取此数据.我们已经调查过这些数据是否确实没有泄露.我们发现通过使用getRecentTasks()中的RecentTaskInfo,任何具有GET_TASK权限的任意应用程序都可以读取这些额外数据.这不是很安全.一旦发现这个泄漏,我们就停止了搜索.这些数据泄露的方式有多少?而且,我如何确保其他应用程序无法读取额外数据?

android android-intent android-4.2-jelly-bean

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

片段在背景可看见

我正在处理一个包含三个片段的应用程序,这些片段在XML文件中定义:

 [HeaderFragment] 

 [MainFragment] 

 [FooterFragment]
Run Code Online (Sandbox Code Playgroud)

第一个屏幕启动三个片段,Header-和FooterFragment是静态的,因此不会更改内容.

MainFragment是一个初始菜单,带有按钮和透明背景(MenuFragment).当我单击菜单中的项目时,我将替换MenuFragment为新的片段(DetailsFragment),如下所示:

FragmentTransaction transaction = mFragmentManager.beginTransaction();
Fragment newFragment = new DetailFragment();
transaction.replace(R.id.content_container, newFragment);
transaction.addToBackStack(newFragment.getTag());
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

DetailFragment显示出来,当我按下回来,MenuFragment出现一切工作应该如何.

这是我的问题:

在我的内部DetailFragment,我有一个切换选项来过滤内容,这是一个按钮.单击此按钮时,将以与上述代码相同的方式DetailFragmentFiltered替换DetailFragment.唯一的区别是我没有将它添加到BackStack,因为在过滤并按下Back后..我仍然想要返回到MenuFragment.

当我单击过滤器按钮并按Back时,DetailFragment(或DetailFragmentFiltered)显示在我的后面MenuFragment.那么,我不想要这个.

android android-fragments

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

选择android中listview的所有复选框

我有用于列表视图,其内部包括复选框5次定制arrayadapter,在这里,我要实现的选择列表视图中所有的复选框,并取消所有复选框,我试着用getchildat()的方法oncreate(),onresume()以及onpostcreate同时,但不做出运气给我.如果你能告诉我解决方案,我很感激.

@Override
      public void onPostCreate(Bundle savedInstanceState){
          super.onPostCreate(savedInstanceState);

      Button selectall=(Button) findViewById(R.id.allselect);

      selectall.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            int count = listview.getCount();

            System.out.println("the count is "+count);
            for (int i = 0; i < listview.getLastVisiblePosition() - listview.getFirstVisiblePosition(); i++)  {

                RelativeLayout itemLayout = (RelativeLayout)listview.getChildAt(i);
                CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.chkbx);
                cb.setChecked(true);

            }

        }
    });
  }
Run Code Online (Sandbox Code Playgroud)

Arrayadapter类

@SuppressWarnings("unchecked")
    public MultipleLeadSyncAdapter(Context context, String[] values,String[] values1,List<Model> qrcode ,String[] values3,String[] values4,String[] values5) {
        super(context, R.layout.multipleselectlist, values1);
        this.context = context; …
Run Code Online (Sandbox Code Playgroud)

checkbox android android-arrayadapter

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