首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPE_KEYGUARD发出呼叫后保持全屏模式

TYPE_KEYGUARD发出呼叫后保持全屏模式
EN

Stack Overflow用户
提问于 2012-04-09 21:26:17
回答 1查看 3.5K关注 0票数 5

我们将把设备提供给客户,他们需要能够用按钮呼叫我们。在我的全屏Activity中,我有一个呼叫服务台电话号码的按钮,因此onClick()它执行以下操作:

代码语言:javascript
复制
    try {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        intent.setData(Uri.parse("tel:" + phoneNumber));
        mContext.startActivity(intent);
    } catch (Exception e) {
        Toast.makeText(mContext, mContext.getString(R.string.couldntcall), Toast.LENGTH_LONG).show();
    }

当拨号器关闭时,标题栏突然保持可见,我猜这与覆盖HOME按钮有关:

代码语言:javascript
复制
@Override
public void onAttachedToWindow()
{  //HOMEBUTTON
    if(OnLockMode())
    {   
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
          super.onAttachedToWindow();
    }
    else
    {
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION); 
        super.onAttachedToWindow();
    }
}

有没有人有解决这个问题的办法?

我尝试了以下几种方法:

我在载货单上写了:

代码语言:javascript
复制
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 

并在OnCreate中使用

代码语言:javascript
复制
requestWindowFeature(Window.FEATURE_NO_TITLE);

onCreate()onResume()中都是如此

代码语言:javascript
复制
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

标题栏仍会显示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-17 20:36:44

将此添加到清单中。

代码语言:javascript
复制
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

在onCreate()内部

代码语言:javascript
复制
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_home);
    View v = findViewById(R.id.home_view);
    v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

其中home_view是xml文件的父视图。

代码语言:javascript
复制
 @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
            return false;
        }

 public void onWindowFocusChanged(boolean hasFocus)
     {
             try
             {
                if(!hasFocus)
                {
                     Object service  = getSystemService("statusbar");
                     Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                     Method collapse = statusbarManager.getMethod("collapse");
                     collapse .setAccessible(true);
                     collapse .invoke(service);
                }
             }
             catch(Exception ex)
             {
             }
     }

你不能捕获home事件,唯一能做的就是给你的应用程序设置home类别,让用户选择。

代码语言:javascript
复制
 <category android:name="android.intent.category.HOME" />
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10073898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档