当前位置: 首页 > 面试题库 >

Android:将方法关联到智能手机的主页按钮

扶文光
2023-03-14
问题内容

如何将方法关联到智能手机的主页按钮?我希望检查我的Android应用程序的此botton是否执行特定方法。我读到禁用主页按钮有方法:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

但这对我没有用。我怎么解决这个问题?


问题答案:

使用此代码:

HomeWatcher mHomeWatcher = new HomeWatcher(this);
mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() {
    @Override
    public void onHomePressed() {
        // do something here...
    }
    @Override
    public void onHomeLongPressed() {
    }
});
mHomeWatcher.startWatch();

HomeWatcher:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;

public class HomeWatcher {

    static final String TAG = "hg";
    private Context mContext;
    private IntentFilter mFilter;
    private OnHomePressedListener mListener;
    private InnerRecevier mRecevier;

    public HomeWatcher(Context context) {
        mContext = context;
        mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    }

    public void setOnHomePressedListener(OnHomePressedListener listener) {
        mListener = listener;
        mRecevier = new InnerRecevier();
    }

    public void startWatch() {
        if (mRecevier != null) {
            mContext.registerReceiver(mRecevier, mFilter);
        }
    }

    public void stopWatch() {
        if (mRecevier != null) {
            mContext.unregisterReceiver(mRecevier);
        }
    }

    class InnerRecevier extends BroadcastReceiver {
        final String SYSTEM_DIALOG_REASON_KEY = "reason";
        final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
        final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
        final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
                String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
                if (reason != null) {
                    Log.e(TAG, "action:" + action + ",reason:" + reason);
                    if (mListener != null) {
                        if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
                            mListener.onHomePressed();
                        } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
                            mListener.onHomeLongPressed();
                        }
                    }
                }
            }
        }
    }
}

OnHomePressedListener:

public interface OnHomePressedListener {
    public void onHomePressed();

    public void onHomeLongPressed();
}


 类似资料:
  • 我想把我用智能手表测量的心率发送到Android移动端。我想把心率信息发到别人的手机上。(比如,当一个戴可穿戴的爷爷突然摔倒时,我想让信息去给他的监护人。) 而在我国,只有2014年出版的一本关于智能手表开发的书,没有办法将心率信息传输到移动端。在Tizen和Stack Overflowhomepage上有相关信息,但我不知道如何开发它。 溜冰场(1)从智能手表Android Wear获取数据到智

  • 我正在开发一款Android应用程序,它需要检测运行应用程序的设备附近的智能手机数量。为此,我有一个计划蓝牙BLE扫描的工作实现。我检测到附近的BLE设备没有问题,但在扫描结果中似乎找不到任何智能手机。 我的问题是:我们可以在Android上使用BLE扫描检测其他智能手机吗?(具体来说;如果我们无法控制其他智能手机中的设置)。 我尝试使用以下蓝牙库扫描BLE设备: RxAndroidBle 为了尝

  • 本文向大家介绍Android调用手机拍照功能的方法,包括了Android调用手机拍照功能的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android调用手机拍照功能的方法。分享给大家供大家参考。具体如下: 一、main.xml布局文件: 二、核心代码: 希望本文所述对大家的Android程序设计有所帮助。

  • 我正面临一个大问题,我试图使用GET方法连接到一个网址。它给我一个错误java.net.未知主机异常:无法解决主机“网址”:没有与主机名相关联的地址。 我一直在看一些帖子,所有人都说是关于权限的。我的权限是: 我可以通过在手机上使用chrome访问该网址,这意味着wifi正在工作。 我使用的是摩托罗拉G2,API 23。

  • 我正在尝试为Android制作一个可以检测附近智能手机设备的应用程序。我需要发现智能手机设备,无论它们连接到WLAN或其操作系统。唯一的要求是启用了它们的蓝牙或wifi设置。我正在尝试捕获这些设备的MAC地址,也许还有RSSI。我试图模拟的一个应用程序示例是Meshlium。 Android经典蓝牙: 我已按照指南发现当前未与我的设备配对的设备。 我试图发现的智能手机需要处于“发现”模式才能被发现

  • 问题内容: 在我的用于读取RSS链接的Android应用程序中,出现此错误: java.net.UnknownHostException:无法解析主机“ example.com”;没有与主机名关联的地址。 在模拟器中,我可以通过浏览器连接到Google。请帮助我解决此问题。 问题答案: 您可能没有权限。尝试将它添加到您的文件中: 注:以上不 必须 的前右侧的标签,但这是把它的好/正确的位置。 注意