我正在尝试显示Back button
上Action bar
移动上一页/活动或主页(第一次打开).我不能这样做.
我的代码.
ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
代码在onCreate
.
这让我坚持了一段时间.
有没有办法可靠地检测是否在Android应用程序中按下了主页按钮?
如果不这样做,是否有一种强有力的方式来告诉导致活动进入onPause的原因?即我们可以检测它是由新活动启动还是按回/ home引起的.
我看到的一个建议是覆盖onPause()并调用isFinishing(),但是当按下主页按钮时,这将返回false,就像新活动开始时一样,因此无法区分这两者.
任何帮助非常感谢.
**更新**:感谢@ android-hungry这个链接:http://nisha113a5.blogspot.com/
覆盖以下方法:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Run Code Online (Sandbox Code Playgroud)
然后,以下事件将被触发按下主页按钮:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Run Code Online (Sandbox Code Playgroud)
我不确定这条线是否有任何副作用:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Run Code Online (Sandbox Code Playgroud)
因此,与普遍的看法相反,您实际上可以听取主键.令人担忧的是,您可以返回false并让home键不执行任何操作.
更新:正如预期的那样,这有一些副作用 - 在启用此模式的情况下,嵌入式视频和谷歌地图似乎不可见.
更新:据说这个hack不再适用于Android 4.0以上版本
我目前正在开发一款Android应用.我想使用操作栏中的应用程序图标导航到"主页"活动.我在这个页面上看到,所有需要做的就是添加一个onOptionsItemSelected
并查找id android.R.id.home
.
这是我在我的活动中实现的代码,我想按下应用程序图标返回HomeActivity
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,没有任何反应.调试时,我可以看到点击图标根本不会触发onOptionsItemSelected()
.我必须在某个地方用图标做点什么吗?截至目前,它都是默认的,就在这个AndroidManifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
Run Code Online (Sandbox Code Playgroud) 至少Gmail和Youtube Android应用程序使用侧边菜单(导航抽屉?),通过滑动或单击应用程序图标(主页按钮)打开:
屏幕截图中的菜单指示符/图标是Android SDK的现成部分吗?(或谷歌在他们的应用程序中使用的自定义图标?)无论如何,最简单的方法是让你的主页按钮看起来像这样,就像打开一个菜单一样?
(targetSdkVersion
18; minSdkVersion
14)
终于搞定了.少了什么对我来说是1)实际图标和2)递延调用syncState()
上ActionBarDrawerToggle
.
android android-icons android-actionbar navigation-drawer android-homebutton
对于某些特定要求,我需要使用我的自定义主页应用程序更改Android默认主页应用程序(我的应用程序中的设置将切换默认主页=我的应用程序或以前的主页)
我不希望用户访问非常复杂的android设置.
任何人都可以帮我解决它在哪里注册launcher.apk默认的家庭应用程序或如何更改它
我唯一能找到的就是那个老问题:如何更改默认的Android桌面应用程序?
但根本没有答案.
我已经看到市场上的HomeSwitcher做了这个伎俩,但对于可能肯定很忙的开发人员却没有答案.
编辑
我在网站http://www.mail-archive.com/android-developers@googlegroups.com/msg74167.html上找到了这个
但是我遇到了同样的问题:
这是我的代码:
private void makePreferred() {
PackageManager pm = getPackageManager();
IntentFilter f = new IntentFilter("android.intent.action.MAIN");
f.addCategory("android.intent.category.HOME");
f.addCategory("android.intent.category.DEFAULT");
ComponentName cn = new ComponentName("com.example.android.home", "com.example.android.home.Home");
pm.addPreferredActivity(f, IntentFilter.MATCH_CATEGORY_EMPTY, null, cn);
Run Code Online (Sandbox Code Playgroud)
我android.permission.SET_PREFERRED_APPLICATIONS
在清单中有一套.在执行上面的代码之后,日志声明已经添加了预期的内容(与我从IntentResolver列表中勾选"Make default"时相同的日志).但是,当我单击home继续时,列表仍会显示,日志显示:
INFO/PackageManager(52): Result set changed, dropping preferred
activity for Intent { act=android.intent.action.MAIN cat=
[android.intent.category.HOME] flg=0x10200000 } type null
Run Code Online (Sandbox Code Playgroud)
因此,解析器似乎删除了默认条目.我做错了什么,或者这是一种安全措施?这有什么想法?
我知道很多次都会问这个问题,但我发现没有一个解决方案可行.我尝试了下面给出的代码......
protected void onPause() {
super.onPause();
Intent intent = new Intent(this,LockActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT |Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
它的作用是当Android主屏幕启动时它将当前活动再次带到前面,但是当主屏幕启动时,将活动再次带到前面需要将近3-4秒.
我使用了一些锁屏应用程序,当点击主页按钮时,它们甚至都没有启动主屏幕.我希望实现这样的目标.
我还使用了onUserLeavesHint方法,onKeyDown方法和onKeyDispatch方法,但它们都没有为我工作.
请不要回答或评论,因为无法在Android中禁用主页按钮.对于这样的答案或评论,我建议你在PlayStore上浏览一些锁屏应用程序.我还在github上找到了一个有源代码的工作应用程序.它正在我的手机上工作,应用程序使用disableKeyguard,但是当我在我的应用程序中执行相同操作时它不起作用(不支持disableKeyguard,但我使用@supress警告("弃用")).
我最近下载了ACDisplay锁屏应用程序:
https://play.google.com/store/apps/details?id=com.achep.ac显示
该应用程序在我的设备上显示覆盖图,同时也检测home button click
到该覆盖图,activity
因此我无法绕过锁定屏幕。它还可以完全隐藏recent button
非根设备上的。那怎么可能?
我已经通过以下链接:
以及用于旧版本Android
OR的所有解决方案,他们都说home
无法检测到按钮单击,因为它可以被恶意应用程序使用。
该应用程序如何做到这一点?
有人可以共享示例代码/应用程序,说明如何防止用户在成功通过身份验证之前退出锁定屏幕应用程序吗?
谢谢。
我开发和应用程序是一个幻灯片放映的图片,当你点击它们时每个播放声音.这就像2-4岁的图画书.
问题是,因为android不会让你捕获主页按钮按下并基本上禁用它,当父母将电话给他们的孩子玩无人看管(勇敢的父母)时,孩子可能无意中退出应用程序然后拨打电话或否则调整手机.
还有另外两个应用程序目前有针对此问题的伪造修复程序.这些应用程序是Toddler Lock和ToddlePhone.我曾尝试联系这些应用程序的开发人员以获取一些指导,但他们并不愿意透露任何内容,如果没有问题,但是这里有人有任何建议吗?
看起来这两个应用程序都像主屏幕替换应用程序.当您在这些应用程序上启用"儿童防护模式"时,系统会提示用户选择和应用该操作,选项为"Launcher,LauncherPro等".再加上幼儿应用.然后你必须使幼儿应用程序成为默认设置,然后手机被"锁定",只能在你"解锁"手机时使用按键组合或触摸屏幕的四个角等"解锁".您正常的主屏幕应用程序默认恢复.下次启用"儿童防护模式"时,您甚至不必将幼儿应用程序设为默认应用程序.
我已经读过这两个应用程序与三星手机有问题,它们可能导致无限的崩溃和重启循环,需要恢复出厂设置.显然,这不是问题的理想解决方案,但它看起来是目前唯一可用的解决方案.
有没有人对如何实施"儿童防范模式"有任何想法?
我是Android开发世界的新手,我已经构建了一个简单的"Hello World"应用程序.首先,活动请求文本.单击"开始"按钮后,应用程序将启动显示输入文本的第二个活动.
如果我单击HOME按钮然后单击应用程序图标,应用程序将再次启动第一个活动,但如果我按住主页按钮并单击"最近的应用程序"栏中的图标,它将恢复我离开的应用程序.
我该如何避免这种情况?
即使单击了启动器图标,我也需要恢复应用程序.
MainActivity.java,
package com.example.myfirstandroidapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/** Called when the user clicks the Send button */
public void …
Run Code Online (Sandbox Code Playgroud)