色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙APP與Android APP的關(guān)系解析

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

昨天跑通了鴻蒙的helloWord,蠻高興的,正準(zhǔn)備繼續(xù)深入的時(shí)候,在網(wǎng)上看到這樣一篇文章

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

1.當(dāng)helloWord跑起來后,在build\intermediates\shell\debug\src\main目錄下確實(shí)有Android 代碼

o4YBAGASLJmAUA74AABnoYFLRNE742.png

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

o4YBAGASLK-ABWUHAAGZVTqu54A186.png

3、打開配置文件指向的ShellMyApplication.java文件,發(fā)現(xiàn)ShellMyApplication繼承了HarmonyApplication

pIYBAGASLMaAcjBfAAB3S42dbi0279.png

4、按住Ctrl點(diǎn)擊HarmonyApplication,進(jìn)入HarmonyApplication類,并定位,發(fā)現(xiàn)依賴包,可以看到在依賴包里有對(duì)Android Application和三大組件的代理類

o4YBAGASLN2AEmqxAAHdoAQWjYc900.png

5、進(jìn)入AbilityShellActivity類,可以看到對(duì)Android Activity的代理

o4YBAGASLPqAGZ5xAAGEWPNbKCI985.png

6、根據(jù)這些情況,實(shí)際上,我們可以在鴻蒙的項(xiàng)目里寫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、監(jiān)聽Android Activity的生命周期,日志現(xiàn)實(shí)當(dāng)前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代碼調(diào)用Android系統(tǒng)APP設(shè)置頁面

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代碼調(diào)用Android系統(tǒng)撥號(hào)頁面

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3943

    瀏覽量

    127788
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Android App環(huán)境檢測(cè)分析

    這個(gè)原理就是APPAndroidManifest.xml文件中application是否配置了android:debuggable="true",設(shè)置true支持動(dòng)態(tài)調(diào)試
    的頭像 發(fā)表于 12-01 10:26 ?967次閱讀

    Android APP如何進(jìn)行訪問硬件驅(qū)動(dòng)

    本文我們要講的是在用 i.MX8 平臺(tái)開發(fā)時(shí),Android APP 如何進(jìn)行訪問硬件驅(qū)動(dòng)。
    的頭像 發(fā)表于 12-04 13:50 ?1756次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>APP</b>如何進(jìn)行訪問硬件驅(qū)動(dòng)

    java后端能轉(zhuǎn)鴻蒙app開發(fā)嗎

    java后端轉(zhuǎn)鴻蒙app開發(fā)好。 還是前端呢
    發(fā)表于 01-29 18:15

    鴻蒙適配APP要用什么開發(fā)語言?!

    請(qǐng)問為鴻蒙適配APP要用什么開發(fā)語言???
    發(fā)表于 09-18 15:48

    BootLoader和APP之間的關(guān)系

    STM32單片機(jī)BootLoader掃盲BootLoader和APP之間的關(guān)系APP就是平時(shí)寫的單片機(jī)上的應(yīng)用程序,而BootLoader本質(zhì)上和APP一樣,也是平時(shí)寫的應(yīng)用程序
    發(fā)表于 12-09 06:01

    請(qǐng)問開發(fā)鴻蒙App的意義在哪里?

    這個(gè)問題也可以認(rèn)為是鴻蒙原生AppAndroid App有什么區(qū)別,如果沒有區(qū)別,本來Android開發(fā)好的應(yīng)用,干嘛還要再去開發(fā)一遍
    發(fā)表于 04-13 11:10

    請(qǐng)問如何選擇鴻蒙App開發(fā)的編程語言?

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

    探析工業(yè)APP諸多要素的關(guān)系與內(nèi)涵

    導(dǎo)讀工業(yè)APP是什么?工業(yè)技術(shù)軟件化是什么?是如何產(chǎn)生的??jī)烧哂惺裁?b class='flag-5'>關(guān)系?與工業(yè)軟件有什么關(guān)系
    的頭像 發(fā)表于 12-10 15:18 ?3441次閱讀

    基于AndroidAPP安全檢測(cè)技術(shù)淺析

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

    Java代碼加密支持Android App Bundle動(dòng)態(tài)化框架

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

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

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

    基于Android的果蠅識(shí)別APP

    本文檔的主要內(nèi)容詳細(xì)介紹的是基于Android的果蠅識(shí)別APP采用隨機(jī)森林,神經(jīng)網(wǎng)絡(luò)等多種算法。
    發(fā)表于 03-01 09:28 ?6次下載

    利用機(jī)智云的Android開源app修改教程

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

    鴻蒙APP開發(fā)鴻蒙權(quán)限請(qǐng)求框架

    /posts/5165 權(quán)限控制是在進(jìn)行 HarmonyOS 應(yīng)用開發(fā)中非常重要的一個(gè)環(huán)節(jié),幾乎所有的商業(yè)應(yīng)用中都會(huì)涉及到。 我們?cè)谠?jīng)使用的 Android app 應(yīng)用中經(jīng)常會(huì)遇到一些 app 會(huì)彈
    的頭像 發(fā)表于 09-28 09:19 ?3032次閱讀

    Android App開發(fā)新選擇:使用Chaquopy輕松結(jié)合Python

    當(dāng)今的程式開發(fā)中,Python已經(jīng)成為了一個(gè)非常流行的語言,因?yàn)樗梢钥焖倬帉懗龈咝У拇a。然而,如果要將Python結(jié)合到Android App(應(yīng)用程式)中,需要進(jìn)行一些復(fù)雜的設(shè)置和調(diào)整
    的頭像 發(fā)表于 04-25 20:29 ?2298次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>App</b>開發(fā)新選擇:使用Chaquopy輕松結(jié)合Python
    主站蜘蛛池模板: 闺蜜扒开我尿口使劲揉 | 成人a视频片在线观看免费 成人a毛片久久免费播放 | 成人a毛片久久免费播放 | 国产成人久视频免费 | 男人的天堂黄色片 | 久草在线在线精品观看99 | 中文字幕人成乱码熟女APP | 撅高 自己扒开 调教 | 国产精品久久久久婷婷五月色 | 国产精品国产三级国产an | 午夜理论片日本中文在线 | 青春禁区动漫免费观看 | 久久久精品成人免费看 | 大香网伊人久久综合观看 | 中文成人在线视频 | 一本道久在线综合道 | 色狠狠一区 | 女人吃男人的鸡鸡 | 农民工老头在出租屋嫖老熟女 | 亚洲色 图 | aa级毛片毛片免费观看久 | 午夜天堂AV久久久噜噜噜 | 2018年免费三级av观看 | 亚洲高清中文字幕免费 | jk制服喷水 | 国产91网站在线观看免费 | 岛国大片在线观看完整版 | 女朋友的妈妈在线观看 | 狂野欧美性猛XXXX乱大交 | 亚洲精品91 | 国产午夜伦伦伦午夜伦 | 国产传媒精品1区2区3区 | 国产亚洲精品免费视频 | 中国老太性色xxxxxhd | 精品国产乱码久久久人妻 | 国产互换后人妻的疯狂VIDEO | 益日韩欧群交P片内射中文 艺术片 快播 | 亚洲 日韩 自拍 视频一区 | 亚洲偷偷自拍免费视频在线 | 一二三四电影完整版免费观看 | 欧美日韩精品一区二区三区高清视频 |