我正在开发一个Android桌面应用程序,我希望它在第一次启动时(与用户确认)将其自身设置为Home按钮的默认操作.
目前,只有在运行我的应用程序后首次按下主页按钮时,Android系统才会向用户提供此选项.
实际上,我希望"后退"按钮不会返回到默认桌面,因为我的应用程序将是默认桌面.也许这个解决方案与Home按钮的解决方案相同?
知道怎么做吗?
我对Android编程比较陌生.我在工作中得到了一项任务,我需要创建一个自定义主页活动启动器.我做了一些研究,并在Android开发者网站(主页样本)上找到了这个例子.这是我原型的开始.
自定义Home活动需要用户进行身份验证(输入一些简单的凭据).我的想法是从Home活动启动一个子活动,并将意图中的结果传回Home活动.我需要能够捕获有关这些凭据的信息,并且该信息将被传递回Home活动.但是,尝试这个时我遇到了问题.我在LogCat中登录了以下内容:"活动正在作为新任务启动,因此取消了活动结果."
我知道startActivityForResult方法,但这对我来说似乎没有用.这是我从家庭活动中启动活动的地方:
@Override
protected void onResume() {
super.onResume();
bindRecents();
Intent iii = new Intent(this, Login.class);
startActivityForResult(iii, STATIC_LOGIN_INTEGER_VALUE);
}
Run Code Online (Sandbox Code Playgroud)
当代码执行时,我从ActivityManager标记中获取上述日志.
我的登录活动有一个用户输入凭据后将会点击的按钮.如果凭据是好的,那么我尝试执行以下操作(我输入了几个日志,以便我可以尝试弄清楚发生了什么):
public void onClick(View src) {
// check for authentic credentials
if(IsValid())
{
Intent loginAuth = new Intent("Login");
loginAuth.putExtra("userRole", userRole);
Log.d("LOGIN", "Setting result...");
if (getParent() == null) {
Log.d("LOGIN", "Parent was null");
setResult(Activity.RESULT_OK, loginAuth);
}
else {
Log.d("LOGIN", "setting result on parent...");
getParent().setResult(Activity.RESULT_OK, loginAuth);
}
Log.d("LOGIN", "Finishing the activity");
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
我在清单文件中将这些活动定义如下:
<activity android:name="Home"
android:theme="@style/Theme"
android:launchMode="singleInstance"
android:stateNotNeeded="true"> …Run Code Online (Sandbox Code Playgroud) android subactivity android-activity android-launcher android-homebutton
我正在开发一个能够在主屏幕上添加快捷方式图标的应用程序.Android平板电脑的正确图标大小是多少?(或者更好地说,如何在运行时获取它?)它似乎与此页面上的内容不同.我已打开DisplayMetrics.densityDpi并相应地更改图标大小.但它并不适用于所有设备DisplayMetrics.DENSITY_MEDIUM.Gnex 似乎没问题,但是我的Galaxy Tab同时显示48x48px图标(因为它在指南中),但是通常的启动器图标是72x72像素而不是48x48 - 它与指南不同?它是否可能与TouchWiz UI相关,因此它与纯Android不同?或问题出在哪里?另外值得注意的是,应用程序本身显示正确的启动器图标(它从hdpi文件夹中获取图标),但在运行时它看起来像是mdpi设备:/谢谢
背景:我正在尝试构建一个 Launcher 应用程序,该应用程序将用户仅限于一组允许的应用程序,并且不允许他们访问设备设置以及除允许的应用程序之外的任何其他内容。
原因:这是一个私人公司向限制使用的员工分发设备的项目。
问题:我能够检测到其他应用程序的启动,但我无法将我的活动叠加在它们之上。下面是代码,我在收到不允许的应用程序的广播后尝试。
private class BadAppReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Intent i = new Intent(HomePage.this,ErrorClass.class);
wh.topAct = wh.bad_app;
HomePage.this.startActivity(i);
Toast.makeText(HomePage.this, "Access to " + wh.bad_app + " is not allowed.",Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
有趣的事实:如果我只是启动另一个应用程序而不是尝试从我的应用程序打开一个活动,我就可以覆盖。使用此解决方案将使我的应用程序依赖于另一个应用程序,并使屏幕冻结几秒钟。
问题:我缺少什么或可以做些什么来使我的活动超过其他应用程序。
提前致谢,非常感谢您的帮助。- 普拉蒂瓦尼
谢谢 Umer,我已经使用了您的解决方案,但这就是现在发生的情况,用户从托盘中打开设置,我的应用程序获取广播并拍摄 ErrorClass 活动,我已安装的 Toast 出现但未出现 ErrorClass 活动。因此用户可以访问设置,现在当用户按下设置上的后退按钮时,会出现 ErrorClass。
这就是我在 ErrorClass onCreate 中的内容
super.onCreate(savedInstanceState);
WindowManager.LayoutParams windowManagerParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY ,
WindowManager.LayoutParams. FLAG_DIM_BEHIND, PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View myView …Run Code Online (Sandbox Code Playgroud) 我有一个 USB 设备,我想知道如何从供应商 ID 和设备 ID 中识别“供应商名称”和“设备名称”。
我从 USBManagers 的 DeviceList Hashmap 获得的设备名称看起来无效。
最后我想要的是这样的:
(硅 - 功率 8GB)
我安装了一个Launcher应用程序.并且用户已选择另一个启动器作为默认设置,这意味着当按下HOME时,默认启动器将出现在前面.
我想为用户提供重置默认启动器的便利.例如在我的启动器的UI中单击按钮将显示Launcher-Pick-Up弹出窗口.
Go Launcher可以做到这一点(在Go的设置视图中).似乎Go Launcher做了类似"PackageManager.clearPackagePreferredActivities("com.android.launcher")"的事情来清除首选的启动器活动!
如何实现?
如何从Android中的应用程序运行时更改启动器图标及其标签?(如果可能的话)
我指的是AndroidManifest.xml:android:icon和中定义的属性android:label.我想用我从相机拍摄的图像替换它.
我必须像spotify一样开始,如果用户没有登录会显示一个屏幕,如果记录显示另一个屏幕,任何人都可以帮忙吗?,谢谢.
当用户选择的壁纸太亮或太暗时,我想更改我的文本视图颜色,基本上充当最新的启动器,例如,如果设置白色壁纸,请将所有文本视图更改为深色,但我不知道如何检测到这一点。
帮助。提前致谢。
在 Android 中,有两种指定启动器图标(可以说是应用程序图标)的方法:
“老”方式
在 mipmap 文件夹中指定不同的 png 文件,通常命名为 ic_launcher.png,但可以通过以下方式设置名称android:icon="@mipmap/appicon_android"
自适应图标
参考https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive。这里的图标由前面和背景可绘制对象组成(请参阅上面提到的链接以获取完整说明)。安卓 说:
接下来,您必须在应用程序中在 res/mipmap-anydpi-v26/ic_launcher.xml 中创建替代可绘制资源,以便与 Android 8.0(API 级别 26)一起使用。然后,您可以使用该元素来定义图标的前景和背景图层可绘制对象。
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
Run Code Online (Sandbox Code Playgroud)
如果我的应用程序有:
minSdkVersion 26
targetSdkVersion 29
Run Code Online (Sandbox Code Playgroud)
是否仍应包含“旧”方式 png 文件,或者仅存在自适应图标就足够了?