精华内容
下载资源
问答
  • 斑马提供的EHS是一个斑马Android设备的锁屏软件,中文说明书和APK。
  • react-add-to-homescreen允许您通知iOS用户您的Web应用程序可在iOS主屏幕上安装。 它模仿了用户访问您的PWA时可见的Android添加到主屏幕小部件的行为。 安装 $ yarn add react-add-to-homescreen 演示版 您可以查看...
  • Home Screen

    2010-01-14 00:22:09
    This resource is mainly to modify the phone's main interface.
  • homescreen

    2012-05-30 21:50:41
    homescreen example
  • {{ add-to-homescreen }} 安装 ember install ember-add-to-homescreen 然后: ember g ember-add-to-homescreen <name> 快速启动支持 对于的1.0之前的版本,请确保使用此库的最新版本0.1.x 对于Fastboot 1.0或更...
  • website Add to Home Screen (如何把网站添加到手机主屏幕 ) HTML页面添加 <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content=...

    website Add to Home Screen (如何把网站添加到手机主屏幕 )

    HTML页面添加

    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="default">
    <meta name="apple-mobile-web-app-title" content="应用名字">
    <link rel="apple-touch-icon" href="acuconf_rtc.png">
    <link rel="apple-touch-icon" type="image/png" sizes="57x57" href="app_logo.png" />
    <link rel="apple-touch-icon" type="image/png"  sizes="72x72" href="app_logo.png" />
    <link rel="apple-touch-icon" type="image/png"  sizes="114x114" href="app_logo.png" />
    <link rel="apple-touch-icon" type="image/png" sizes="144x144" href="app_logo.png" />
    <meta name="mobile-web-app-capable" content="yes">
    <link rel="manifest" href="manifest.json" />
    

    mainfest.json文件

    {
      "short_name": "应用名字简写,
      "name": "应用名字",
      "icons": [
        {
          "src": "favicon.ico",
          "sizes": "64x64 32x32 24x24 16x16",
          "type": "image/x-icon"
        },
        {
          "src": "acuconf_rtc.png",
          "type": "image/png",
          "sizes": "32x32"
        }
      ],
      "start_url": ".",
      "display": "standalone",
      "theme_color": "#000000",
      "background_color": "#ffffff"
    }
    

    参考教程

    展开全文
  • git clone https://github.com/KevinGrandon/firefoxos-homescreen-boilerplate.git apps/firefoxos-homescreen-boilerplate 2 - 重置您的设备以安装主屏幕: PRODUCTION=1 make reset-gaia 3 - 启用它! 打开...
  • homescreen_boxes-源码

    2021-03-13 23:21:36
    homescreen_boxes
  • // TODO编写自述API ExchangeRate API-
  • pythonista-homescreen-icon 一个 Pythonista 实用程序(旨在放置在操作菜单中),允许您为任何脚本添加主屏幕图标 安装脚本: import zipfile , requests , io c = requests . request ( 'GET' , '...
  • 定制替换Android桌面(home screen) Launcher

    千次阅读 2016-03-08 15:53:20
    1、想将home screen换成自己写的activity,该如何实现? 在你要设置为home screen的那个activity的androidManifest.xml中的标签中加上这几句 话 运行后,重启模拟器会弹出一个选择进入哪个界面的对话框 2、怎样...

    替换Android桌面的相关问题:

    1、想将home screen换成自己写的activity,该如何实现?

    在你要设置为home screen的那个activity的androidManifest.xml中的<intent-filter>标签中加上这几句 话<category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />运行后,重启模拟器会弹出一个选择进入哪个界面的对话框

    2、怎样将系统默认的home screen删除?

    重新编译launcher源码,去掉配置文件中的home属性和HOME属性。。
    在自己的activity中加入这两个属性,然后重新烧系统。 

    以下是定制Android的完整思路和步骤:

    如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自己的Home,而且不希望用户安装的Launcher来替换掉你的Launcher.
    我们可以通过修改Framework来实现这样的功能。

    这里以Android2.1的源代码为例来实际说明。

    1)首先了解一下Android的启动过程。
    Android系统的启动先从Zygote开始启动,然后……(中间的过程就不说了)…..一直到了SystemServer(framework)这个地方,看到这段代码:

    1. /**
    2. * This method is called from Zygote to initialize the system. This will cause the native
    3. * services (SurfaceFlinger, AudioFlinger, etc..) to be started. After that it will call back
    4. * up into init2() to start the Android services.
    5. */
    6. native public static void init1(String[] args);

    7. public static void main(String[] args) {
    8. if (SamplingProfilerIntegration.isEnabled()) {
    9. SamplingProfilerIntegration.start();
    10. timer = new Timer();
    11. timer.schedule(new TimerTask() {
    12. @Override
    13. public void run() {
    14. SamplingProfilerIntegration.writeSnapshot(“system_server”);
    15. }
    16. }, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
    17. }

    18. // The system server has to run all of the time, so it needs to be
    19. // as efficient as possible with its memory usage.
    20. VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);

    21. System.loadLibrary(“android_servers”);
    22. init1(args);
    23. }

    24. public static final void init2() {
    25. Log.i(TAG, “Entered the Android system server!”);
    26. Thread thr = new ServerThread();
    27. thr.setName(“android.server.ServerThread”);
    28. thr.start();
    29. }
    30. }

    从SystemServer的main函数开始启动各种服务。
    首先启动init1,然后启动init2.
    从上面的注释可以看到:init1这个方法时被Zygote调用来初始化系统的,init1会启动native的服务如SurfaceFlinger,AudioFlinger等等,这些工作做完以后会回调init2来启动Android的service。

    这里我们主要来关注init2的过程。
    init2中启动ServerThread线程,
    ServerThread中启动了一系列的服务,比如这些:

    1. ActivityManagerService
    2. EntropyService
    3. PowerManagerService
    4. TelephonyRegistry
    5. PackageManagerService
    6. AccountManagerService
    7. BatteryService
    8. HardwareService
    9. Watchdog
    10. SensorService
    11. BluetoothService
    12. StatusBarService
    13. ClipboardService
    14. InputMethodManagerService
    15. NetStatService
    16. ConnectivityService
    17. AccessibilityManagerService
    18. NotificationManagerService
    19. MountService
    20. DeviceStorageMonitorService
    21. LocationManagerService
    22. SearchManagerService
    23. FallbackCheckinService
    24. WallpaperManagerService
    25. AudioService
    26. BackupManagerService
    27. AppWidgetService

    这些大大小小的服务起来以后,开始
    ((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
    在systemReady后开始开始启动Launcher。

    在寻找Launcher的时候是根据HOME的filter(在Manifest中定义的<categoryAndroid:name=”android.intent.category.HOME” />)来过滤。
    然后根据filter出来的HOME来启动,如果只有一个HOME,则启动这个HOME,如果用户自己装了HOME,那就会弹出来一个列表供用户选择。

    我们现在希望从这里弹出我们自己定制的Launcher,同时也不希望弹出选择HOME的界面,我们不希望用户修改我们的home,比如我们的home上放了好多广告,以及强制安装的程序,不希望用户把它干掉。

    我们可以通过这样来实现:

    2) 定义一个私有的filter选项,然后用这个选项来过滤HOME.
    一般情况下我们使用Manifest中定义的<category android:name=”android.intent.category.HOME”来过滤的,我们现在增加一个私有的HOME_FIRST过滤。

    在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加两行代码

    1. //添加CATEGORY_HOME_FIRST
    2. @SdkConstant(SdkConstantType.INTENT_CATEGORY)
    3. public static final String CATEGORY_HOME_FIRST = “android.intent.category.HOME_FIRST”;

    3)修改和CATEGORY_HOME相关的所有的地方,都改成HOME_FIRST,主要是framework中的这几个地方:

    1. frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中
    2. //intent.addCategory(Intent.CATEGORY_HOME);
    3. 改成intent.addCategory(Intent.CATEGORY_HOME_FIRST);
    4. //if (r.intent.hasCategory(Intent.CATEGORY_HOME)) {
    5. 改成if (r.intent.hasCategory(Intent.CATEGORY_HOME_FIRST)) { //Intent.CATEGORY_HOME -> Intent.CATEGORY_HOME_FIRST

    6. frameworks/base/services/java/com/android/server/am/HistoryRecorder.java中
    7. // _intent.hasCategory(Intent.CATEGORY_HOME) &&
    8. 改成 _intent.hasCategory(Intent.CATEGORY_HOME_FIRST) && //Intent.CATEGORY_HOME->Intent.CATEGORY_HOME_FIRST

    9. frameworks/policies/base/mid/com/android/internal/policy/impl/MidWindowManager.java中
    10. //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
    11. 改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST);

    12. frameworks/policies/base/mid/com/android/internal/policy/impl/RecentApplicationsDialog.java中
    13. //new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
    14. 改成 new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0);

    15. frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中
    16. //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
    17. 改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST);

    18. frameworks/policies/base/phone/com/android/internal/policy/impl/RecentApplicationsDialog.java中
    19. //ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
    20. 改成 ResolveInfo homeInfo = pm.resolveActivity(newIntent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0);

    4) 写一个自己的Launcher.
    可以参考Android sample中的Launcher,或者android源代码中的 /packages/apps/Launcher 来写。
    在Launcher中标记其是不是Launcher的最关键的代码时Manifest中的filter:android:name=”android.intent.category.HOME”
    现在我们定义了自己的filter,那么,我们在我们自己写的Launcher中将Manifest改为:

    1. <application android:process=”android.process.acore3″ android:icon=”@drawable/icon” android:label=”@string/app_name”>
    2. <activity android:name=”.FirstAppActivity”
    3. android:label=”@string/app_name”>
    4. <intent-filter>
    5. <action android:name=”android.intent.action.MAIN” />
    6. <category android:name=”android.intent.category.HOME_FIRST” />
    7. <category android:name=”android.intent.category.DEFAULT” />
    8. <category android:name=”android.intent.category.MONKEY” />
    9. </intent-filter>
    10. </activity>
    11. </application>

     

    然后将编译好的apk放到/out/target/product/generic/system/app目录下。

    5)将Android自带的Launcher删除掉,包括源代码(packages/apps/Launcher)和apk(/out/target/product/generic/system/app/Launcher.apk)。

    6)
    做完这些工作,就可以重新编译Android了,我们可以编译修改过的几个相关的包。
    如果之前编译过了Android源码,可以用mmm命令来编译部分的改动。
    这里需要这样编译:

    1. $ . build/envsetup.sh
    2. $ mmm frameworks/base
    3. $ mmm frameworks/base/services/java
    4. $ mmm frameworks/policies/base/mid
    5. $ mmm frameworks/policies/base/phone

    7)
    编译完成后重新生成img文件。

    1. $ make snod

    现在可以启动Android模拟器来看效果了。
    首先设置环境变量:
    $ export ANDROID_PRODUCT_OUT= ./out/target/product/generic
    然后切换到
    $ cd ./out/host/linux-x86/bin
    运行
    $ ./emulator

    这样我们启动的模拟器里面用的image就是我们刚才编译好的自己定制的东西了。
    从模拟器上可以看到启动的Launcher是我们自己的Launcher,不会出现默认的Launcher了,也不会出现选择界面。

    9)我们再验证一下,如果用户装上了一个其他的Launcher(Home)会怎么样。
    从网上找一个一般的Launcher或者自己写一个一般的Launcher装上去,重新启动,不会出现选择界面。
    按HOME键也不会出来两个HOME来选择。

    这样我们就牢牢控制了用户的桌面。
    只有我们自己定制的HOME才能装上。 这对于定制Android设备的厂商很有用处。

    展开全文
  • 盖兹主屏幕 我的个性化主屏幕 关于 显示如何创建简单的个性化主屏幕的示例技能。 例子 学分 克里斯格斯林 类别 配置 标签 #空闲#主屏幕#示例
  • photoshop
  • Home screen可以说是一个手机的最重要应用,就像一个门户网站的首页,直接决定了用户的第一印象。下面对home screen做一简要分析。 home screen的代码位于packages/apps/Launcher目录。从文件launcher.xml,works
    Home screen可以说是一个手机的最重要应用,就像一个门户网站的首页,直接决定了用户的第一印象。下面对home screen做一简要分析。

    home screen的代码位于packages/apps/Launcher目录。从文件launcher.xml,workspace_screen.xml可获知home screen的UI结构如下图所示:


    整个homescreen是一个包含三个child view的FrameLayout(com.android.launcher.DragLayer)。

    第一个child就是桌面com.android.launcher.Workspace。这个桌面又包含三个child。每个child就对应一个桌面。这就是你在Android上看到的三个桌面。每个桌面上可以放置下列对象:应用快捷方式,appwidget和folder。

    第二个child是一个SlidingDrawer控件,这个控件由两个子控件组成。一个是com.android.launcher.HandleView,就是Android桌面下方的把手,当点击这个把手时,另一个子控件,com.android.launcher.AllAppsGridView就会弹出,这个子控件列出系统中当前安装的所有类型为category.launcher的Activity。

    第三个child是com.android.launcher.DeleteZone。当用户在桌面上长按一个widget时,把手位置就会出现一个垃圾桶形状的控件,就是这个控件。

    在虚拟桌面上可以摆放四种类型的对象:
    1. ITEM_SHORTCUT,应用快捷方式
    2. ITEM_APPWIDGET,app widget
    3. ITEM_LIVE_FOLDER,文件夹
    4. ITEM_WALLPAPER,墙纸。

    类Favorites(LauncherSettings.java)和类LauncherProvider定义了一个content provider,用来存储桌面上可以放置的几个对象,包括shortcut, search和clock等。

    类AddAdapter(AddAdapter.java)列出了这四个类型 对象。当用户在桌面空白处长按时,下列函数序列被执行:
    Launcher::onLongClick -->
    Launcher::showAddDialog -->
    Launcher::showDialog(DIALOG_CREATE_SHORTCUT); -->
    Launcher::onCreateDialog -->
    Launcher::CreateShortcut::createDialog:这个函数创建一个弹出式对话框,询问用户是要添加什么(快捷方式,appwidget, 文件夹和墙纸)其内容就来自AddAdapter。

    类Favorites(LauncherSettings.java)和类LauncherProvider定义了一个content provider,用来存储桌面上可以放置的几个对象,包括shortcut, search和clock等。

    类DesktopItemsLoader负责将桌面上所有的对象从content provider中提取。

    线程private ApplicationsLoader mApplicationsLoader负责从包管理器中获取系统中安装的应用列表。(之后显示在AllAppsGridView上)。ApplicationsLoader::run实现:
    1)通过包管理器列出系统中所有类型为Launcher,action为MAIN的activity;
    2)对每一个Activity,
          a) 将Activity相关元数据信息,如title, icon, intent等缓存到appInfoCache;
          b) 填充到ApplicationsAdapter 中。填充过程中用到了一些小技巧,每填充4(UI_NOTIFICATION_RATE)个activity更新一下相应view。



    在Launcher::onCreate中,函数startLoaders被调用。而该函数接着调用loadApplications和loadUserItems,分别获取系统的应用列表,以及显示在桌面上的对象列表(快捷方式,appwidget,folder等)。

    Launcher上排列的所有应用图标由AllAppsGridView对象呈现。这个对象是一个GridView。其对应的Adapter是ApplicationsAdapter,对应的model则是ApplicationInfo数组。数组内容是由ApplicationsLoader装载的。
    private class ApplicationsLoader implements Runnable。


    类简介: 
    AddAdapter:添加桌面元素的适配器。
    AllAppsGridView:Icon列表的的主界面,继承gridView。
    DeleteZone:luancher的删除区域,继承ImageView。
    DragController:拖动控制接口。
    DragLayer:整个launcher的父节点,继承FrameLayout,实现接口DrayController。
    DragSource:拖动源接口,定义了void onDropCompleted(View target, boolean success)。
    DropTarget:拖动目标,定义很多拖动过程需要的方法:onDrop,onDragEnter,onDragOver,onDragExit,acceptDrop。
    HandleView:launcher抽屉的开关,不过在android2.2已经没用抽屉了。
    Launcher:整个launcher的程序的入口,代码量最大的一个文件。
    Workspace:整个界面layout,几个窗口就是他下面的子节点。

    Launcher中实现了MVC模式(M:launchermode , V:draglayer ,C: launcher),以此为主线,可以得到 Launcher对各个组件管理的细节(如drag的实现)。

    展开全文
  • 定制替换Android桌面(home screen) launcher

    千次阅读 2013-01-06 16:53:29
    定制替换Android桌面(home screen) [日期:2011-08-21] 来源:Linux社区 作者:hb_zha   替换Android桌面的相关问题: 1、想将home screen换成自己写的activity,该如何实现? ...

    定制替换Android桌面(home screen)

    [日期:2011-08-21]来源:Linux社区 作者:hb_zha 


    替换Android桌面的相关问题:

    1、想将home screen换成自己写的activity,该如何实现?

    在你要设置为home screen的那个activity的androidManifest.xml中的<intent-filter>标签中加上这几句 话<category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />运行后,重启模拟器会弹出一个选择进入哪个界面的对话框

    2、怎样将系统默认的home screen删除?

    重新编译launcher源码,去掉配置文件中的home属性和HOME属性。。
    在自己的activity中加入这两个属性,然后重新烧系统。 

    以下是定制Android的完整思路和步骤:

    如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自己的Home,而且不希望用户安装的Launcher来替换掉你的Launcher.
    我们可以通过修改Framework来实现这样的功能。

    这里以Android2.1的源代码为例来实际说明。

    1)首先了解一下Android的启动过程。
    Android系统的启动先从Zygote开始启动,然后……(中间的过程就不说了)…..一直到了SystemServer(framework)这个地方,看到这段代码:

    1. /**
    2. * This method is called from Zygote to initialize the system. This will cause the native
    3. * services (SurfaceFlinger, AudioFlinger, etc..) to be started. After that it will call back
    4. * up into init2() to start the Android services.
    5. */
    6. native public static void init1(String[] args);

    7. public static void main(String[] args) {
    8. if (SamplingProfilerIntegration.isEnabled()) {
    9. SamplingProfilerIntegration.start();
    10. timer = new Timer();
    11. timer.schedule(new TimerTask() {
    12. @Override
    13. public void run() {
    14. SamplingProfilerIntegration.writeSnapshot(“system_server”);
    15. }
    16. }, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
    17. }

    18. // The system server has to run all of the time, so it needs to be
    19. // as efficient as possible with its memory usage.
    20. VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);

    21. System.loadLibrary(“android_servers”);
    22. init1(args);
    23. }

    24. public static final void init2() {
    25. Log.i(TAG, “Entered the Android system server!”);
    26. Thread thr = new ServerThread();
    27. thr.setName(“android.server.ServerThread”);
    28. thr.start();
    29. }
    30. }

    从SystemServer的main函数开始启动各种服务。
    首先启动init1,然后启动init2.
    从上面的注释可以看到:init1这个方法时被Zygote调用来初始化系统的,init1会启动native的服务如SurfaceFlinger,AudioFlinger等等,这些工作做完以后会回调init2来启动Android的service。

    这里我们主要来关注init2的过程。
    init2中启动ServerThread线程,
    ServerThread中启动了一系列的服务,比如这些:

    1. ActivityManagerService
    2. EntropyService
    3. PowerManagerService
    4. TelephonyRegistry
    5. PackageManagerService
    6. AccountManagerService
    7. BatteryService
    8. HardwareService
    9. Watchdog
    10. SensorService
    11. BluetoothService
    12. StatusBarService
    13. ClipboardService
    14. InputMethodManagerService
    15. NetStatService
    16. ConnectivityService
    17. AccessibilityManagerService
    18. NotificationManagerService
    19. MountService
    20. DeviceStorageMonitorService
    21. LocationManagerService
    22. SearchManagerService
    23. FallbackCheckinService
    24. WallpaperManagerService
    25. AudioService
    26. BackupManagerService
    27. AppWidgetService

    这些大大小小的服务起来以后,开始
    ((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
    在systemReady后开始开始启动Launcher。

    在寻找Launcher的时候是根据HOME的filter(在Manifest中定义的<category Android:name=”android.intent.category.HOME” />)来过滤。
    然后根据filter出来的HOME来启动,如果只有一个HOME,则启动这个HOME,如果用户自己装了HOME,那就会弹出来一个列表供用户选择。

    我们现在希望从这里弹出我们自己定制的Launcher,同时也不希望弹出选择HOME的界面,我们不希望用户修改我们的home,比如我们的home上放了好多广告,以及强制安装的程序,不希望用户把它干掉。

    我们可以通过这样来实现:

    2) 定义一个私有的filter选项,然后用这个选项来过滤HOME.
    一般情况下我们使用Manifest中定义的<category android:name=”android.intent.category.HOME”来过滤的,我们现在增加一个私有的HOME_FIRST过滤。

    在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加两行代码

    1. //添加CATEGORY_HOME_FIRST
    2. @SdkConstant(SdkConstantType.INTENT_CATEGORY)
    3. public static final String CATEGORY_HOME_FIRST = “android.intent.category.HOME_FIRST”;

    3)修改和CATEGORY_HOME相关的所有的地方,都改成HOME_FIRST,主要是framework中的这几个地方:

    1. frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中
    2. //intent.addCategory(Intent.CATEGORY_HOME);
    3. 改成intent.addCategory(Intent.CATEGORY_HOME_FIRST);
    4. //if (r.intent.hasCategory(Intent.CATEGORY_HOME)) {
    5. 改成if (r.intent.hasCategory(Intent.CATEGORY_HOME_FIRST)) { //Intent.CATEGORY_HOME -> Intent.CATEGORY_HOME_FIRST

    6. frameworks/base/services/java/com/android/server/am/HistoryRecorder.java中
    7. // _intent.hasCategory(Intent.CATEGORY_HOME) &&
    8. 改成 _intent.hasCategory(Intent.CATEGORY_HOME_FIRST) && //Intent.CATEGORY_HOME->Intent.CATEGORY_HOME_FIRST

    9. frameworks/policies/base/mid/com/android/internal/policy/impl/MidWindowManager.java中
    10. //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
    11. 改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST);

    12. frameworks/policies/base/mid/com/android/internal/policy/impl/RecentApplicationsDialog.java中
    13. //new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
    14. 改成 new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0);

    15. frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java中
    16. //mHomeIntent.addCategory(Intent.CATEGORY_HOME);
    17. 改成 mHomeIntent.addCategory(Intent.CATEGORY_HOME_FIRST);

    18. frameworks/policies/base/phone/com/android/internal/policy/impl/RecentApplicationsDialog.java中
    19. //ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),0);
    20. 改成 ResolveInfo homeInfo = pm.resolveActivity(newIntent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME_FIRST),0);

    4) 写一个自己的Launcher.
    可以参考Android sample中的Launcher,或者android源代码中的 /packages/apps/Launcher 来写。
    在Launcher中标记其是不是Launcher的最关键的代码时Manifest中的filter:android:name=”android.intent.category.HOME”
    现在我们定义了自己的filter,那么,我们在我们自己写的Launcher中将Manifest改为:

    1. <application android:process=”android.process.acore3″ android:icon=”@drawable/icon” android:label=”@string/app_name”>
    2. <activity android:name=”.FirstAppActivity”
    3. android:label=”@string/app_name”>
    4. <intent-filter>
    5. <action android:name=”android.intent.action.MAIN” />
    6. <category android:name=”android.intent.category.HOME_FIRST” />
    7. <category android:name=”android.intent.category.DEFAULT” />
    8. <category android:name=”android.intent.category.MONKEY” />
    9. </intent-filter>
    10. </activity>
    11. </application>

     

    然后将编译好的apk放到/out/target/product/generic/system/app目录下。

    5)将Android自带的Launcher删除掉,包括源代码(packages/apps/Launcher)和apk(/out/target/product/generic/system/app/Launcher.apk)。

    6)
    做完这些工作,就可以重新编译Android了,我们可以编译修改过的几个相关的包。
    如果之前编译过了Android源码,可以用mmm命令来编译部分的改动。
    这里需要这样编译:

    1. $ . build/envsetup.sh
    2. $ mmm frameworks/base
    3. $ mmm frameworks/base/services/java
    4. $ mmm frameworks/policies/base/mid
    5. $ mmm frameworks/policies/base/phone

    7)
    编译完成后重新生成img文件。

    1. $ make snod

    现在可以启动Android模拟器来看效果了。
    首先设置环境变量:
    $ export ANDROID_PRODUCT_OUT= ./out/target/product/generic
    然后切换到
    $ cd ./out/host/linux-x86/bin
    运行
    $ ./emulator

    这样我们启动的模拟器里面用的image就是我们刚才编译好的自己定制的东西了。
    从模拟器上可以看到启动的Launcher是我们自己的Launcher,不会出现默认的Launcher了,也不会出现选择界面。

    9)我们再验证一下,如果用户装上了一个其他的Launcher(Home)会怎么样。
    从网上找一个一般的Launcher或者自己写一个一般的Launcher装上去,重新启动,不会出现选择界面。
    按HOME键也不会出来两个HOME来选择。

    这样我们就牢牢控制了用户的桌面。
    只有我们自己定制的HOME才能装上。 这对于定制Android设备的厂商很有用处。


    展开全文
  • 但多了<category android:name="android.intent.category.HOME" />的配置,意思就是当点击home键后,回到主界面,也就是回到launcher,这验证了我上面所说的“HomeScreen本身是Launcher的一部分”。  接下来打开...
  • 文章转载只能用于非商业性质,且不能带有虚拟货币、... 何为Home Screen Widgets Home screen Widget即称为小工具或者中文小工具,是显示在主页上的views,通过后台进程更新view的数据,。 Android由AppWidgetManag
  • 最近一直在研究android2.2的系统源码,由于项目中的需求, 有个项目需求就是需要让appwidget开机后自动添加到Home Screen上中。 现在终于算是搞定了, 来说说我的做法吧。我是在Lanucher2系统主题源码上做的修改,...
  •  launcher:screen="2"  launcher:x="2"  launcher:y="3" /> 相应的 如果想增加自己应用程序的shortcut到桌面上,只需在该文件中添加如下tag  launcher:packageName="" //完整的包名  launcher:...
  • 4. You could see the link in the home screen(主屏幕).     5. Also you could see the links in 应用程序页面.   6. Then what I want to do is to trace how to define the ...
  • if (window.navigator.userAgent.indexOf('iPhone') !... // Display a message asking to add the app to the Home Screen } }else{ document.location.href = 'please-open-from-an-iphone.html'; }
  • 轻松定制home screen

    2010-03-12 07:58:00
    轻松定制home screenhome, screen, 定制其实这个很简单 不需要你改任何(){tagshow(event)}">代码 只需要将你的(){tags
  • enable home screen lock

    千次阅读 2010-03-03 00:34:00
    problem, the screen lock can not be enabled, because in KeyguardViewMediator class, log show here: if (!lockedOrMissing && !provisioned) { if (DEBUG) Log.d(TAG, "do
  • HomeScreen上添加指定应用图标

    千次阅读 2010-08-24 17:16:00
    已经有很多黑莓开发爱好者问了怎样能把自己的应用程序图标放到黑莓主界面上 (HomeScreen)。这个功能一直到黑莓OS 6.0才开放出来。   如下代码示意如何添加快捷图标到主界面:   1. 首先...
  • Android HomeScreen Launcher解析(一)

    千次阅读 2010-03-12 07:49:00
    Android HomeScreen Launcher解析(一)发布时间:2009-03-13 作者:Android开发网原创 很多网友在邮件中提到了Android的桌面Home Screen有关的开发,我们可以看到常规的桌面上有3个Widgets,比如一个Clock、Search 和不...
  • 12/28/2009 Nicolas Guibourgé, Microsoft Corporation2007年2月摘要对Today screen插件(PPC)和Home screen插件(Smartphones)的架构进行比较。同时对如何高效设计这些插件给出一些建议和示例。本文假定你已经对...
  • cascades文档翻译——HomeScreen

    千次阅读 2013-08-15 17:12:20
    #include <bb/platform/HomeScreen> 依赖库: LIBS += -lbbplatform 提供功能: 更改壁纸,添加快捷方式,检查是否是床边模式。 属性: bool ...
  • 1、想将home screen换成自己写的activity,该如何实现? 在你要设置为home screen的那个activity的androidManifest.xml中的标签中加上这几句 话 运行后,重启模拟器会弹出一个选择进入哪个界面的对话框 2、怎样将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,807
精华内容 23,522
关键字:

homescreen