android主页按钮按下

Posted

技术标签:

【中文标题】android主页按钮按下【英文标题】:android home button pressed 【发布时间】:2018-08-12 08:18:43 【问题描述】:

请完整检查此代码并建议我一些想法 我已经在 android studio 3.0.1 中执行了这个并且没有显示任何错误但没有显示任何输出

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

检查这个

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();
                        
                    
                
            
        
    

检查这个

public interface OnHomePressedListener 
    public void onHomePressed();

    public void onHomeLongPressed();

这段代码对我不起作用

【问题讨论】:

您的 extra 及其值未记录在案。大约有 10,000 种 Android 设备型号。你能负担得起所有这些来测试,看看是否每个人都在使用这些无证的东西吗? 【参考方案1】:

您不应该看到用户何时按下“主页”键,这主要是出于安全原因和用户的一致行为。

(启动器等特殊情况除外)

大多数执行此操作的方法已被禁用,您的方法可能也已被禁用。

【讨论】:

以上是关于android主页按钮按下的主要内容,如果未能解决你的问题,请参考以下文章

Android 11 - 按下主页按钮时触发前台服务 onTaskRemoved

当用户按下主页按钮时停止 Android 服务

Android - 按下时显示上次查看的活动(主页按钮 - >应用程序快捷方式)

Android - 双击主页按钮作为默认操作

在android的主页按钮中需要帮助

在Android N多窗口模式下按下主页按钮时未调用Activity onStop()