1. 程式人生 > >Android系統修改彙總(MTK)

Android系統修改彙總(MTK)

以下都是基於Android 6.0 的程式碼去修改的!!!

十四、將桌面workspace、hotseat 大小調整 放大一半 ,

這個要根據自己的需求來制定

 workspace.setPadding(padding.left/2, padding.top/2, padding.right/2, padding.bottom);

 hotseat.setPadding(edgeMarginPx + padding.left/2, 0,
                    edgeMarginPx + padding.right/2,
                    2 * edgeMarginPx);


十三、隱藏Launcher3 桌面介面 上面的 搜尋欄 

packages\apps\Launcher3\src\com\android\launcher3\Launcher.Java

 //mSearchDropTargetBar.addView(mQsb); 註釋掉這一行 就行

十二、修改Launcher3 appall app選單列表背景透明度

\packages\apps\Launcher3\src\com\android\launcher3\allapps\AllAppsContainerView.java

        mContainerView.setBackground(background);


        //mRevealView.setBackground(background.getConstantState().newDrawable());
        mAppsRecyclerView.updateBackgroundPadding(bgPadding);
        mAdapter.updateBackgroundPadding(bgPadding);
mContainerView.getBackground().setAlpha(20);

packages\apps\Launcher3\src\com\android\launcher3\op09\AllAppsContainerView.java

        mContainerView.setBackground(null);
        //mRevealView.setBackground(background.getConstantState().newDrawable());

十一、長按電源鍵 只顯示 關機 一項

我們知道長按Power鍵會彈出選項,如 關機、 重啟、飛航模式。現在想只保留一項  關機 ;

frameworks/base/core/res/res/values/config.xml

搜尋 config_globalActionsList 

    <string-array translatable="false" name="config_globalActionsList">
        <item>power</item>

    </string-array>

以下是參考 ,需要新增的放在上面這個數組裡面就是了  :

<item>power</item>關機選項
<item>bugreport</item>錯誤報告選項
<item>airplane</item>飛航模式選項
<item>silent</item>靜音振動鈴聲選項
<item>restart</item>重啟選項

<item>reboot</item>//新增重啟功能   <item>settings</item>設定選項
<item>lockdown</item>鎖屏選項
<item>screencapture</item>截圖、錄製選項
<item>users</item>使用者選項

十、無法寫入sn號,需要把這個 巨集 開啟,這個去掉註釋,讓寫的barcode生效,barcode就是SN,不然都是預設的123456789ABCDEF

vendor/mediatek/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c


九、launcher  focus_indicator 桌面 頁面 顯示錶示 (就是桌面上那小白點),在設定系統字型大小後和在app_app介面螢幕旋轉 回到all_app 介面會顯示出來 ,bug,讓它不顯示:

+++ b/packages/apps/Launcher3/src/com/android/launcher3/Launcher.java
@@ -138,6 +138,10 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
+import android.hardware.SensorManager;
+
+import android.content.pm.ResolveInfo;
+import android.os.IBinder;


 /**
  * Default launcher application.   onCreate()裡面新增
@@ -656,7 +660,47 @@ public class Launcher extends Activity
             showFirstRunActivity();
             showFirstRunClings();
         }
+
+               IntentFilter mInrentFilter = new IntentFilter() ;
+        mInrentFilter.addAction("android.intent.action.CONFIGURATION_CHANGED");
+        registerReceiver(screenOrientationChangedReceiver,mInrentFilter) ;
+               
+               mOrientationListener = new OrientationEventListener(this,
+                SensorManager.SENSOR_DELAY_NORMAL) {
+                               @Override
+                               public void onOrientationChanged(int orientation) {
+                               }
+                       };
+
+                       if (mOrientationListener.canDetectOrientation()) {
+                               setPageIndicatorVisble();
+                               mOrientationListener.enable();
+                       } else {
+                               setPageIndicatorVisble();
+                               mOrientationListener.disable();
+                       }
     }
+       
+       /// R add hide Visble ndicator ///#Switching language#Screen rotation/// 2017-3-2 09:34:26
+       private void setPageIndicatorVisble(){
+               if(isAppsViewVisible()){
+                       if (mPageIndicators != null){
+                               mPageIndicators.setAlpha(0f);
+                       }
+               } else {
+                       if (mPageIndicators != null) {
+                               mPageIndicators.setAlpha(1f);
+                       }
+               }
+       }
+       
+       /// R add Monitor#Screen rotation/// 2017-3-2 09:34:32
+       private BroadcastReceiver screenOrientationChangedReceiver=new BroadcastReceiver() {
+                       @Override 
+                       public void onReceive(Context context, Intent intent) {
+                               setPageIndicatorVisble();
+                       }
+    };


     @Override
     public void onSettingsChanged(String settings, boolean value) {
@@ -2344,6 +2388,7 @@ public class Launcher extends Activity
         if (mLauncherCallbacks != null) {
             mLauncherCallbacks.onDestroy();
         }
+               unregisterReceiver(screenOrientationChangedReceiver);
     }

     public DragController getDragController() {
@@ -5468,6 +5513,7 @@ public class Launcher extends Activity
         }
         return false;
     }
 }

diff --Git a/packages/apps/Launcher3/AndroidManifest.xml b/packages/apps/Launcher3/AndroidManifest.xml
index a3d5ec0..20e7d4d 100755
--- a/packages/apps/Launcher3/AndroidManifest.xml
+++ b/packages/apps/Launcher3/AndroidManifest.xml
@@ -68,6 +68,7 @@
     <uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />
     <uses-permission android:name="com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS" />
     <uses-permission android:name="com.android.launcher3.permission.RECEIVE_FIRST_LOAD_BROADCAST" />
+       <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
     <!-- M: hide apps activity requires this permission to get package size. -->
     <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
     <!-- M: ALSP02141215, android security patch. -->

八、Workspace 介面大小修改;hotseat 介面大小修改

diff --git a/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java b/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
index ebb19cc..0ed0ad0 100755
--- a/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java
@@ -414,7 +414,7 @@ public class DeviceProfile {
         lp.gravity = Gravity.CENTER;
         Rect padding = getWorkspacePadding(isLayoutRtl);
         workspace.setLayoutParams(lp);
-        workspace.setPadding(padding.left, padding.top, padding.right, padding.bottom);
+        workspace.setPadding(padding.left/2, padding.top/2, padding.right/2, padding.bottom);

         workspace.setPageSpacing(getWorkspacePageSpacing(isLayoutRtl));

         // Layout the hotseat
@@ -432,8 +432,8 @@ public class DeviceProfile {
             lp.gravity = Gravity.BOTTOM;
             lp.width = LayoutParams.MATCH_PARENT;
             lp.height = hotseatBarHeightPx;
-            hotseat.setPadding(edgeMarginPx + padding.left, 0,
-                    edgeMarginPx + padding.right,
+            hotseat.setPadding(edgeMarginPx + padding.left/2, 0,
+                    edgeMarginPx + padding.right/2,

                     2 * edgeMarginPx);
         } else {

七、修改碟符名稱資訊、型號資訊

index b20ecaa..f92828b 100755
--- a/device/hiteq/hiteq8783_tb_m/full_hiteq8783_tb_m.mk
+++ b/device/hiteq/hiteq8783_tb_m/full_hiteq8783_tb_m.mk

@@ -55,7 +55,7 @@ TRUSTY_PROJECT ?= hiteq8783_tb_m
 #CHIVIN

 PRODUCT_BRAND := GP8PRO
-CHIVIN_PRODUCT := GP8_PRO
+CHIVIN_PRODUCT := Aura_TELPAD_GP8_PRO_tablet

 CHIVIN_VERSION := GP8_PRO_V01.00.01    #micheal modify version


 #CHIVIN
diff --git a/packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.Javab/packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
index a964aed..bf11928 100755
--- a/packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
+++ b/packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
@@ -134,7 +134,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
         findPreference(KEY_BUILD_NUMBER).setEnabled(true);
         findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion());


-               findPreference(KEY_DEVICE_MODEL).setSummary("Aura_TELPAD-GP8-PRO-tablet");
+               findPreference(KEY_DEVICE_MODEL).setSummary(SystemProperties.get("ro.product.model"));


         if (!SELinux.isSELinuxEnabled()) {
             String status = getResources().getString(R.string.selinux_status_disabled);
@@ -155,7 +155,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In
         // Remove Equipment id preference if FCC ID is not set by RIL
         removePreferenceIfPropertyMissing(getPreferenceScreen(), KEY_EQUIPMENT_ID,
                 PROPERTY_EQUIPMENT_ID);

diff --git a/frameworks/av/media/mtp/MtpServer.cpp b/frameworks/av/media/mtp/MtpServer.cpp
index 470d6ca..91eb0c9 100755
--- a/frameworks/av/media/mtp/MtpServer.cpp
+++ b/frameworks/av/media/mtp/MtpServer.cpp
@@ -500,7 +500,7 @@ MtpResponseCode MtpServer::doGetDeviceInfo() {

     property_get("ro.product.model", prop_value, "MTP Device");
     //string.set(prop_value);
-       string.set("Aura_GP8_PRO_tablet"); ///R add 2017-2-27 21:38:22
+       string.set("Aura_SP8_PRO_tablet"); ///R add 2017-2-27 21:38:22   碟符名稱

     mData.putString(string);   // Model
     string.set("1.0");
     mData.putString(string);   // Device Version

六、修改距離感應的閾值Update-hiteq8783_tb_m.dts-threshold

diff --git a/kernel-3.18/arch/arm64/boot/dts/hiteq8783_tb_m.dts b/kernel-3.18/arch/arm64/boot/dts/hiteq8783_tb_m.dts
index 7ac604a..ea78285 100644
--- a/kernel-3.18/arch/arm64/boot/dts/hiteq8783_tb_m.dts
+++ b/kernel-3.18/arch/arm64/boot/dts/hiteq8783_tb_m.dts
@@ -1,4 +1,3 @@
-
 /dts-v1/;

 #include "mt6753.dtsi"
@@ -92,8 +91,8 @@ [email protected] {
                power_vol = <0>;
                als_level = <1 2 5 10 20 30 40 80 200 300 400 600 1000 1600 2000>;
                als_value = <80 400 800 1200 1800 2000 2300 2300 12000 12000 12000 48000 48000 72000 81920 81920>;
-               ps_threshold_high =  <90>;
-               ps_threshold_low =  <70>;
+               ps_threshold_high =  <300>;
+               ps_threshold_low =  <140>;

                is_batch_supported_ps   = <0>;
                is_batch_supported_als  = <0>;
        };

注:值比ps_threshold_high 高,黑屏,值比ps_threshold_low  低,亮屏

  通話介面 為避免 臉部貼近螢幕 而 設計 黑屏 ,是最好的列子。

五、鬧鐘中的倒計時;設定1秒後;當到達設定的時間後;要超過4秒作用才會提示響鈴提醒;設2秒倒計時就會3秒提示;設3秒就2秒提示;5秒後;即時提示;

index c7bf61c..170b536 100755
--- a/packages/apps/DeskClock/src/com/android/deskclock/timer/TimerFragment.java
+++ b/packages/apps/DeskClock/src/com/android/deskclock/timer/TimerFragment.java
@@ -123,6 +123,13 @@ public class TimerFragment extends DeskClockFragment implements OnSharedPreferen
             final boolean visible = Utils.getTimeNow() % TIME_PERIOD_MS < SPLIT;
             final boolean toggle = mVisible != visible;
             mVisible = visible;
+                       
+                       final TimerObj mTimer_up = getCurrentTimer();
+                       /// R: add Prompt
+                       if (mTimer_up.mTimeLeft <= 0 ) {
+                               updateTimerState(mTimer_up, Timers.TIMES_UP);
+            }  
+          

             for (int i = 0; i < mAdapter.getCount(); i++) {
                 final TimerObj t = mAdapter.getTimerAt(i);

四、鈴聲音量調節時;調節到最小後;再調大;還是沒有聲音

diff --git a/packages/apps/Settings/src/com/mediatek/audioprofile/SeekBarVolumizer.java b/packages/apps/Settings/src/com/mediatek/audioprofile/SeekBarVolumizer.java
old mode 100644
new mode 100755
index 3b52c18..fa24e40
--- a/packages/apps/Settings/src/com/mediatek/audioprofile/SeekBarVolumizer.java
+++ b/packages/apps/Settings/src/com/mediatek/audioprofile/SeekBarVolumizer.java
@@ -58,6 +58,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba
     private final Receiver mReceiver = new Receiver();
     private final Observer mVolumeObserver;
     private String mKey;
+    private String mCurrentKey;//add by steven on 20170215
     private boolean mProfileIsActive = false;

     private int mOriginalStreamVolume;
@@ -81,6 +82,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba

         mStreamType = streamType;
         mKey = profileKey;
+        // add by steven on 20170215
+        mCurrentKey = mProfileManager.getActiveProfileKey();

         //mMaxStreamVolume = mAudioManager.getStreamMaxVolume(mStreamType);
         mMaxStreamVolume = mProfileManager.getStreamMaxVolume(mStreamType);
         mSystemVolume = mAudioManager.getStreamVolume(mStreamType);
@@ -412,6 +415,9 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba
         }
     }

+    // add by steven on 20170215
+    private static final String GENERAL_PREF_KEY = "mtk_audioprofile_general";
+    

     /**
      * When click the "Ok" button, set the volume to system.
      */
@@ -429,6 +435,11 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba
                     + mLastProgress);
             setVolume(mStreamType, mLastProgress, false);
         } else {
+               // add by steven on 20170215
+               if (GENERAL_PREF_KEY.equals(mCurrentKey)&&!mProfileManager.isActiveProfile(mCurrentKey)) {
+                       mProfileManager.setActiveProfile(mCurrentKey);
+               }
+               

             if (!isSilentProfileActive()) {
                 Log.d("@M_" + TAG, "saveVolume: " + mStreamType
                         + " not Active, Revert system Volume "

三、修改藍芽預設名稱:

藍芽名稱未按要求設定;現在為Android BT;  Setting---->Bluetooth---->這裡的字:“ANDROID BT ” 修改為:HaHa

diff --git a/system/bt/btif/src/btif_dm.c b/system/bt/btif/src/btif_dm.c

old mode 100644
new mode 100755
index f7b9ed4..2da5800
--- a/system/bt/btif/src/btif_dm.c
+++ b/system/bt/btif/src/btif_dm.c
@@ -195,7 +195,7 @@ static BOOLEAN btif_dm_inquiry_in_progress = FALSE;
 /************************************************************************************
 **  Static variables
 ************************************************************************************/
-static char btif_default_local_name[DEFAULT_LOCAL_NAME_MAX+1] = {'\0'};
+static char btif_default_local_name[DEFAULT_LOCAL_NAME_MAX+1] = "HaHa";

 /******************************************************************************

二、修改預設開啟wif、bluetooth

diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
old mode 100644
new mode 100755
index daa22c4..0a7584b
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -36,7 +36,7 @@
     <bool name="def_haptic_feedback">true</bool>

     <bool name="def_bluetooth_on">false</bool>    // 預設開啟藍芽 true  false
-    <bool name="def_wifi_display_on">false</bool>
+    <bool name="def_wifi_display_on">true</bool>

     <bool name="def_install_non_market_apps">false</bool>
     <bool name="def_package_verifier_enable">true</bool>
     <!-- Comma-separated list of location providers.
@@ -47,7 +47,7 @@
     <bool name="assisted_gps_enabled">true</bool>
     <bool name="def_netstats_enabled">true</bool>
     <bool name="def_usb_mass_storage_enabled">true</bool>
-    <bool name="def_wifi_on">false</bool>
+    <bool name="def_wifi_on">true</bool>

     <!-- 0 == never, 1 == only when plugged in, 2 == always -->
     <integer name="def_wifi_sleep_policy">2</integer>
     <bool name="def_networks_available_notification_on">true</bool>

一、修改預設字型

diff --git a/
frameworks/base/core/java/android/content/res/Configuration.java b/frameworks/base/core/java/android/content/res/Configuration.java
old mode 100644
new mode 100755
index 0d41748..e7b20fa
--- a/frameworks/base/core/java/android/content/res/Configuration.java
+++ b/frameworks/base/core/java/android/content/res/Configuration.java
@@ -830,7 +830,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      * Set this object to the system defaults.
      */
     public void setToDefaults() {
-        fontScale = 1;
+        fontScale = 1.15f; //normal value is 1

         mcc = mnc = 0;
         locale = null;
         userSetLocale = false;

1、launcher的佈局太居中,要想兩邊拉伸

<\packages\apps\Launcher2\res\values\dimens.xml>

    <dimen name=" apps_customize_pageLayoutPaddingLeft">40dp</dimen>

    <dimen name=" apps_customize_pageLayoutPaddingRight">40dp</dimen>

apps tab欄的寬度( Launcher2icon 數目、大小)

\packages\apps\Launcher2\res\layout-sw720dp\workspace.xml>

   launcher:cellCountX="10"
    launcher:cellCountY="6"

相關推薦

Android系統修改彙總MTK

以下都是基於Android 6.0 的程式碼去修改的!!! 十四、將桌面workspace、hotseat 大小調整 放大一半 , 這個要根據自己的需求來制定  workspace.setPadding(padding.left/

Android系統應用開發Android framework系統預設設定修改

launcher 總結:  1、launcher的佈局太居中,要想兩邊拉伸 <\packages\apps\Launcher2\res\values\dimens.xml> <dimen name="apps_customize_pageLayo

Android系統啟動流程解析init進程啟動過程

option 寫入 android change failed miss 通知 target sna 前言 作為“Android框架層”這個大系列中的第一個系列,我們首先要了解的是Android系統啟動流程,在這個流程中會涉及到很多重要的知識點,這個系列我們就來一一講解它們

Android7.1 刪除下拉通知欄中的系統圖標mtk

在frameworks/base/packages/systemui/res/values/config.xml這個檔案中有如下配置: <string name="quick_settings_tiles_default" translatable="false"> wifi,bt

Android系統啟動流程解析init程序啟動過程

前言 作為“Android框架層”這個大系列中的第一個系列,我們首先要了解的是Android系統啟動流程,在這個流程中會涉及到很多重要的知識點,這個系列我們就來一一講解它們,這一篇我們就來學習init程序。 1.init簡介 init程序是An

Android系統啟動流程解析Zygote程序啟動過程

前言 上一篇文章我們分析了init程序的啟動過程,啟動過程中主要做了三件事,其中一件就是建立了Zygote程序,那麼Zygote程序是什麼,它做了哪些事呢?這篇文章會給你這些問題的答案。 1.Zygote簡介 在Android系統中,DVM(D

Android系統啟動流程Launcher啟動過程與系統啟動流程

相關文章  Android系統架構與系統原始碼目錄  Android系統啟動流程(一)解析init程序啟動過程  Android系統啟動流程(二)解析Zygote程序啟動過程  Android系統啟動流程(三)解析SyetemServer程序啟動過程 前言

Android系統啟動流程解析SyetemServer程序啟動過程

相關文章  Android系統架構與系統原始碼目錄  Android系統啟動流程(一)解析init程序啟動過程  Android系統啟動流程(二)解析Zygote程序啟動過程 前言 上一篇我們學習了Zygote程序,並且知道Zygote程序啟動了SyetemServ

Hook android系統呼叫研究

一、Android核心原始碼的編譯環境 系統環境:Ubuntu 14.04 x64bit Android系統版本:Android 4.4.4 r1 Android核心版本:android-msm-hammerhead-3.4-kitkat-mr1 手機裝置:Nexus

Android系統應用開發遮蔽狀態列下拉

網上關於遮蔽狀態列的文章搜到不少,但都是針對某個應用,或者鎖屏狀態,才能遮蔽狀態列的下拉,而我的需求是不管任意狀態都遮蔽狀態列下拉,百度到的也可能版本不一樣,說的一些檔案都找不到,搜到一篇文章,自己修改了一個方法,然後OK了,具體如下: 檔案位置:frameworks

Android多渠道打包彙總—— 美團的多渠道打包方式

1. 原理 大家都知道,apk檔案其實可以看做是一個壓縮包,我們把一個Android應用包當作zip檔案包進行解壓,然後發現在簽名生成的目錄下(META-INF)新增一個空檔案不需要重新簽名。利用這個機制,該檔案的檔名就是渠道名。這種方式不需要重新簽名等步驟,

Android系統應用開發系統語言以及新增字型庫

1.如何向android的setting語言列表中新增一門語言 第一種:修改配置檔案 位置:build/target/product/languages_full.mk| languages_small.mk,這兩個檔案裡頭,有PRODUCT_LOCALES := en_U

Android多渠道打包彙總—— 為什麼要進行多渠道打包

1. 什麼是多渠道包? 渠道包就是要在安裝包中新增渠道資訊,也就是channel,對應不同的渠道,例如:小米市場、360市場、應用寶市場等 2. 為什麼要提供多渠道包? 我們要在安裝包中新增不同的標識,應用在請求網路的時候攜帶渠道資訊,方便後臺做運營統

一步步淺析Android系統導航欄NavigationBar

Android手機可分為有導航欄以及沒導航欄兩種,一般有物理按鍵的機器不會帶有導航欄,而沒有物理按鍵的機器則基本會帶,比如華為的手機基本都是帶導航欄的。 導航欄是如何載入到桌面上?是如何實現與物理按鍵相同的功能的呢?帶著種種疑問,我們來read the fuc

Android系統預設HomeLauncher的啟動過程小結

http://blog.csdn.net/happy08god/article/details/24265167       Android系統開機,各個應用是如何載入並被顯示到桌面上的呢?帶著這份好奇,閱讀了在 AndroidManifest.xml 會

android底層修改media曲線MTK

修改media聲音曲線 一、聲音調節 ①通過audio tuning調節 聲音值得範圍為0~255,volume的值也可決定聲音的大小,最大值為172,該值太大會出現破音。 ②如果需要從程式碼角度就獲得相應的曲線,需要修改  vendor/mediatek/propriet

Android實戰——第三方服務之Bmob後端雲的增刪改查、上傳文件、獲取文件、修改密碼

tid blank 生成 src 上傳圖片 放置 第三方 b數 net 第三方服務之Bmob後端雲的增刪改查、上傳文件、獲取文件、修改密碼(二) 事先說明:這裏的一切操作都是在集成了BmobSDK之後實現的,如果對Bmob還不了解的話,請關註我第一篇Bmob文章 步

Android 攔截WebView請求,並加入或修改引數GET

今天遇到一個需求,H5內部呼叫登入請求,然後手機端給他拼接使用者的ID及其他訊息 這個WebView提供了方法shouldInterceptRequest 下面程式碼,只是簡單demo,請求方式是get mWebView.setWebViewClient(new WebViewClien

android hardware 簡述Android系統原始碼情景分析 筆記

轉自 https://blog.csdn.net/u013377887/article/details/52965988   1.Android原始碼開發的C可執行原始檔一般存在external目錄下  2  Android的幾層框架.  &n

android系統功能呼叫Notification、廣播開機自啟動、A應用啟動B應用

首先,我來一個整體概括:新建一個app,設定開機自動啟動,然後建立一個notification,當用戶點選notification時,啟動另一個應用程式,好了,廢話多說,讓我們來看程式碼吧! java文件 private Button button; int