在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙APP與Android APP的關系解析

鴻蒙系統HarmonyOS ? 來源:CSDN 博主 ? 作者:87年的90后 ? 2021-01-28 11:21 ? 次閱讀

昨天跑通了鴻蒙的helloWord,蠻高興的,正準備繼續深入的時候,在網上看到這樣一篇文章

我按照文章的說法復盤了一下,貼出代碼,供大家交流。

1.當helloWord跑起來后,在build\intermediates\shell\debug\src\main目錄下確實有Android 代碼

o4YBAGASLJmAUA74AABnoYFLRNE742.png

2、打開AndroidManifest.xml文件,可以看到Android配置信息

o4YBAGASLK-ABWUHAAGZVTqu54A186.png

3、打開配置文件指向的ShellMyApplication.java文件,發現ShellMyApplication繼承了HarmonyApplication

pIYBAGASLMaAcjBfAAB3S42dbi0279.png

4、按住Ctrl點擊HarmonyApplication,進入HarmonyApplication類,并定位,發現依賴包,可以看到在依賴包里有對Android Application和三大組件的代理類

o4YBAGASLN2AEmqxAAHdoAQWjYc900.png

5、進入AbilityShellActivity類,可以看到對Android Activity的代理

o4YBAGASLPqAGZ5xAAGEWPNbKCI985.png

6、根據這些情況,實際上,我們可以在鴻蒙的項目里寫Android代碼,首先引入Android依賴包

implementation 'com.google.android:android:4.1.1.4'

pIYBAGASLRCARfmNAACX65SAsUs502.png

7、在MyApplication類中獲取Android的Application

public class MyApplication extends AbilityPackage {

@Override

public void onInitialize() {

super.onInitialize();

}

public static Application getApp(){

try {

return (Application)Class.forName("android.app.ActivityThread").getMethod("currentApplication").invoke(null,(Object[])null);

}catch (Exception e){

e.printStackTrace();

}

return null;

}

}

8、嘗試輸出Android Log和Toast并成功

public class MainAbility extends Ability {

private Application application;

@Override

public void onStart(Intent intent) {

super.onStart(intent);

super.setMainRoute(MainAbilitySlice.class.getName());

application=MyApplication.getApp();

Log.e("來自Android的Log",application.getClass().getName());

Toast.makeText(application,"Android吐司",Toast.LENGTH_LONG).show();

}

}

pIYBAGASLSeAeukdAAFB7TdCQyI383.png

9、監聽Android Activity的生命周期,日志現實當前Activity是MainAbilityShellActivity,就是build目錄里的Activity

MyApplication.getApp().registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {

@Override

public void onActivityCreated(Activity activity, Bundle bundle) {

Log.e("來自Android的Log","onActivityCreated------>"+activity.getClass().getName());

}

@Override

public void onActivityStarted(Activity activity) {

Log.e("來自Android的Log","onActivityStarted------>"+activity.getClass().getName());

}

@Override

public void onActivityResumed(Activity activity) {

Log.e("來自Android的Log","onActivityResumed------>"+activity.getClass().getName());

}

@Override

public void onActivityPaused(Activity activity) {

Log.e("來自Android的Log","onActivityPaused------>"+activity.getClass().getName());

}

@Override

public void onActivityStopped(Activity activity) {

Log.e("來自Android的Log","onActivityStopped------>"+activity.getClass().getName());

}

@Override

public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

Log.e("來自Android的Log","onActivitySaveInstanceState------>"+activity.getClass().getName());

}

@Override

public void onActivityDestroyed(Activity activity) {

Log.e("來自Android的Log","onActivityDestroyed------>"+activity.getClass().getName());

}

});

o4YBAGASLTuAcZS8AABB3LUsJpw840.png

10、用Android代碼調用Android系統APP設置頁面

android.content.Intent intent1=new android.content.Intent();

intent1.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);

intent1.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");

intent1.setData(Uri.fromParts("package", MyApplication.getApp().getPackageName(), null));

MyApplication.getApp().startActivity(intent1);

11、用Android代碼調用Android系統撥號頁面

android.content.Intent intent1=new android.content.Intent(android.content.Intent.ACTION_DIAL,Uri.parse("tel:123456789"));

intent1.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);

MyApplication.getApp().startActivity(intent1);

12、最后,在鴻蒙的Ability上添加Android控件

MyApplication.getApp().registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {

@Override

public void onActivityCreated(Activity activity, Bundle bundle) {

Log.e("來自Android的Log","onActivityCreated------>"+activity.getClass().getName());

}

@Override

public void onActivityStarted(Activity activity) {

Log.e("來自Android的Log","onActivityStarted------>"+activity.getClass().getName());

}

@Override

public void onActivityResumed(Activity activity) {

Log.e("來自Android的Log","onActivityResumed------>"+activity.getClass().getName());

FrameLayout frameLayout=(FrameLayout)activity.getWindow().getDecorView().findViewById(android.R.id.content);

View view=frameLayout.findViewById(1);

LinearLayout linearLayout;

if (view instanceof LinearLayout){

linearLayout=(LinearLayout)view;

}

else {

linearLayout=new LinearLayout(activity);

linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));

linearLayout.setOrientation(LinearLayout.VERTICAL);

frameLayout.addView(linearLayout);

}

TextView textView=new TextView(activity);

textView.setText("來自Android的TextView");

textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));

linearLayout.addView(textView);

android.widget.Button button=new android.widget.Button(activity);

button.setText("來自Android的button");

button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));

linearLayout.addView(button);

}

@Override

public void onActivityPaused(Activity activity) {

Log.e("來自Android的Log","onActivityPaused------>"+activity.getClass().getName());

}

@Override

public void onActivityStopped(Activity activity) {

Log.e("來自Android的Log","onActivityStopped------>"+activity.getClass().getName());

}

@Override

public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

Log.e("來自Android的Log","onActivitySaveInstanceState------>"+activity.getClass().getName());

}

@Override

public void onActivityDestroyed(Activity activity) {

Log.e("來自Android的Log","onActivityDestroyed------>"+activity.getClass().getName());

}

});

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3943

    瀏覽量

    127779
收藏 人收藏

    評論

    相關推薦

    Android App環境檢測分析

    這個原理就是APPAndroidManifest.xml文件中application是否配置了android:debuggable="true",設置true支持動態調試
    的頭像 發表于 12-01 10:26 ?967次閱讀

    Android APP如何進行訪問硬件驅動

    本文我們要講的是在用 i.MX8 平臺開發時,Android APP 如何進行訪問硬件驅動。
    的頭像 發表于 12-04 13:50 ?1752次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>APP</b>如何進行訪問硬件驅動

    java后端能轉鴻蒙app開發嗎

    java后端轉鴻蒙app開發好。 還是前端呢
    發表于 01-29 18:15

    鴻蒙適配APP要用什么開發語言?!

    請問為鴻蒙適配APP要用什么開發語言???
    發表于 09-18 15:48

    BootLoader和APP之間的關系

    STM32單片機BootLoader掃盲BootLoader和APP之間的關系APP就是平時寫的單片機上的應用程序,而BootLoader本質上和APP一樣,也是平時寫的應用程序
    發表于 12-09 06:01

    請問開發鴻蒙App的意義在哪里?

    這個問題也可以認為是鴻蒙原生AppAndroid App有什么區別,如果沒有區別,本來Android開發好的應用,干嘛還要再去開發一遍
    發表于 04-13 11:10

    請問如何選擇鴻蒙App開發的編程語言?

    如何選擇鴻蒙App開發的編程語言
    發表于 04-13 11:15

    探析工業APP諸多要素的關系與內涵

    導讀工業APP是什么?工業技術軟件化是什么?是如何產生的?兩者有什么關系?與工業軟件有什么關系
    的頭像 發表于 12-10 15:18 ?3441次閱讀

    基于AndroidAPP安全檢測技術淺析

    基于AndroidAPP安全檢測技術淺析
    發表于 06-28 16:03 ?16次下載
    基于<b class='flag-5'>Android</b>的<b class='flag-5'>APP</b>安全檢測技術淺析

    Java代碼加密支持Android App Bundle動態化框架

    傳統App加殼技術無法應用在App Bundle模式生成的數據包之上。然而,幾維安全推出的Java2C加固方案完美支持Android App Bundle動態化框架,守護企業的核心代碼
    的頭像 發表于 07-29 16:13 ?2355次閱讀
    Java代碼加密支持<b class='flag-5'>Android</b> <b class='flag-5'>App</b> Bundle動態化框架

    Android 12“App Pairs”功能:改造分屏多任務能力

    Android 12“App Pairs”功能:新分屏多任務能力,安卓,app,谷歌,分屏,應用程序
    發表于 02-04 14:45 ?1750次閱讀

    基于Android的果蠅識別APP

    本文檔的主要內容詳細介紹的是基于Android的果蠅識別APP采用隨機森林,神經網絡等多種算法。
    發表于 03-01 09:28 ?6次下載

    利用機智云的Android開源app修改教程

    進行以下操作之前請確保已經在機智云中創建了一個產品,下面點擊添加應用,選擇Android生成一個app應用 然后按照提示,將密匙填入到相應位置,具體參考我上一篇博客,點擊下載,將app工程下載到本地 2、Andriod方面處理
    的頭像 發表于 07-05 10:39 ?2420次閱讀

    鴻蒙APP開發鴻蒙權限請求框架

    /posts/5165 權限控制是在進行 HarmonyOS 應用開發中非常重要的一個環節,幾乎所有的商業應用中都會涉及到。 我們在曾經使用的 Android app 應用中經常會遇到一些 app 會彈
    的頭像 發表于 09-28 09:19 ?3032次閱讀

    Android App開發新選擇:使用Chaquopy輕松結合Python

    當今的程式開發中,Python已經成為了一個非常流行的語言,因為它可以快速編寫出高效的代碼。然而,如果要將Python結合到Android App(應用程式)中,需要進行一些復雜的設置和調整
    的頭像 發表于 04-25 20:29 ?2298次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>App</b>開發新選擇:使用Chaquopy輕松結合Python
    主站蜘蛛池模板: 国产高清一区二区三区四区 | 亚洲qingse中文在线 | 夜色综合 | 亚洲综合国产一区二区三区 | 午夜精品久久久久蜜桃 | 韩国三级理论在线观看视频 | 久操视屏| 婷婷色站 | 免费福利午夜影视网 | 青草青草视频2免费观看 | 欧美一二 | 激情丁香网 | 天天澡天天干 | 色狠狠xx | 日本系列 1页 亚洲系列 | 韩国一级网站 | 就是操就是干 | 亚洲欧美在线一区二区 | 一级特黄aaa大片在线观看 | 国产三级免费观看 | 成年毛片 | 久久精品免费视频观看 | www.久久在线| 日日噜噜噜噜人人爽亚洲精品 | 亚洲天堂成人在线 | 天天寡妇色 | 我不卡老子影院午夜伦我不卡四虎 | 能看的黄网 | 日韩毛片免费 | 国产高清免费不卡观看 | 四虎海外在线永久免费看 | 亚洲成人精品在线 | 777色淫网站女女免费 | 伊人三级| bt天堂资源在线种子 | 狠狠色综合网站久久久久久久 | 日韩三级在线观看视频 | 黄色网址大全免费 | 91视频观看免费 | 四虎在线永久免费视频网站 | 狠狠五月深爱婷婷网 |