Android的四大元件及應用安裝安全問題(4)
Android的四大元件及元件間通訊
如果想對四大元件有深入的瞭解,那永遠不要停留在一些條條幹乾的SDK API的認識,需要了解他的通訊,他的複用,他的邊界問題,這樣才會對四大元件有透明的認識.
四大元件簡潔
Activity
- 沒有Activity 可以顯示UI嗎?
可以的,我們可以直接操作view顯示,其實Activity 只是為了讓這些view 富有邏輯的意義,也就是說Activity 主要是讓這些邏輯相關的view 抽象成一個一個相關page,這樣就可以使這些page進行前進後退等邏輯行為.
- 沒有Activity 可以顯示UI嗎?
Service
可以理解成一個沒有UI的後臺耗時的服務.ContentProvite
Android中資源共享的一種方式.然而對於一些外部app來說資源都是private的,那麼ContentProvite為什麼可以進行訪問到.
其主要是對於一些permission可以控制的情況下,資源才可以訪問到.BroadcastReceiver,
相當於就是在system level中實現了一個observer(觀察者模式)廣播的設計模式.主要是為了解決一對多的耦合問題
.
Android是基於元件的複用,元件間的邊界透明
Android中程式設計的模型比較特殊,他不是根據程序,也不是根據application,程序和application的邊界,都被google故意的去掉了,對於應用開發者說只認識一些元件,元件,元件. 他們直接的通訊都是基於intent,也就是說你只要釋出一個Intent
不用在意他到底是如何實現的,這些都交給系統去處理,你只要保證intent 指令的正確性即可.
元件的puclic 和 private
- android:exported欄位
- exported的default值
- override default值
元件的permission assignment
- Securing Activities(Service也是一樣)
Android定義了一些安全的方式來限制特殊activity的啟動,如果要start該activity就必須申請對應的許可權.
如下面程式碼如果要啟動MyActivity 必須要申請下面許可權才可以.
<activity android:name=".MyActivity" android:permission="com.testapp.permission.START_MYACTIVITY" >
<intent-filter>
</intent-filter>
</activity>
應用安裝的安全
應用安裝的安全性考慮和呼叫方式
- 應用安裝(安裝/解除安裝/升級)這個過程是一個高特權/風險的操作.
- 所以使用者必須可知/可控
- 主流實現方式: 客戶智慧委派而不能直接操作.
- 呼叫安裝傳統系統模式: 傳送intent給系統的
Package Install app
下面程式碼會顯示UI告訴使用者此時需要安裝的app
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(i);
特權安裝模式:
系統的Package Install App
內部會呼叫PackageManagerService
的Install Package
,該操作與android.permission.INSTALL_PACKAGES
繫結,而且該permission 的protection level="signature|system"
,也就是說需要是有同樣private key或者系統應用才可以呼叫.靜默安裝:
所謂的靜默安裝方式只存在ROOT
手機上,開發者可以選擇:
基於pm cmd : pm install-r
靜態的安裝
應用安裝時怎麼做UID/GID分配
在安裝時應用的UID/GID就已經被系統分配好,並通過PackageManagerService
將分配好的UID/GID(都是10000+)
儲存到Databases裡,當你run app時就會從該db從獲取它的UID/GID,也就是安裝和執行的UID/GID 相同.
相關推薦
Android的四大元件及應用安裝安全問題(4)
Android的四大元件及元件間通訊 如果想對四大元件有深入的瞭解,那永遠不要停留在一些條條幹乾的SDK API的認識,需要了解他的通訊,他的複用,他的邊界問題,這樣才會對四大元件有透明的認識. 四大元件簡潔 Activity 沒有Activity 可以顯示UI嗎? 可以的,我們可以直接操作v
深入剖析Android四大元件(七)——Activity啟動的4個階段
在Activity的啟動流程中,共有4個階段,下面將一一道來。 1.第一階段——啟動資訊翻譯以及服務呼叫 這一階段的工作主要是在應用程式本地完成的,主要為啟動Activity做一些引數上的準備,然後服務的代理將這些引數轉發到服務,開始Activity啟動的流程,如下圖:
android四大元件--使用LocalBroadcast進行應用內資料傳遞
1.區別:本地廣播的傳送和接受,只能在一個程序中。因此在跨程序中的通訊是不能使用的。比如建立了新的程序或者是在不同app之間通訊都是不能使用。 但是在不同的執行緒中是能夠進行傳送和接受資料。因此保證了廣播的安全問題。 2.使用是通過LocalBroadcastManager獲取到獲取例項進行
Android--四大元件之BroadCastReceiver(生命週期、實現原理及使用等)
####1. BroadCastReceiver是什麼? ####2. 廣播型別 ######1). 有序廣播 ######2). 無序廣播 ####3. 生命週期 ####4. 實現原理 ####5. 使用方法 ####6. 許可權問題(安全性) ####7. LocalBroad
Android四大元件詳細介紹及例子
這個文章主要是講Android開發的四大元件,本文主要分為 一、Activity詳解 二、Service詳解 三、Broadcast Receiver詳解 四、Content Provider詳解 外加一個重要元件 intent的詳解。 一、Activity詳解 Activty的生命週期
Android四大元件之BroadcastReceiver應用詳解
今天我們來講一下Android中BroadcastReceiver的相關知識。 BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和應用中的廣播。 在Android系統中,廣播體現在方方面面,例如當開機完成後系統會產生一條廣播,接收到這條廣播就能實
Android四大元件應用系列——Activity與Service互動實現APK下載
private Thread downloadThread; private void startDownload(){ downloadThread=new Thread(new Runnable() { @Override public void run
Android四大元件應用系列——使用BroadcastReceiver和Service實現倒計時
public class ClockActivity extends Activity { private TextView tvClock; public static final String CLOCK_ACTION="com.jereh.Clock_Action";
Android四大元件應用系列5——使用AIDL實現跨程序呼叫Service
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan
Android四大元件應用系列——實現電話攔截和電話錄音
public class ListenPhoneService extends Service { private AudioManager mAudioManager; private TelephonyManager tm; public ListenPhoneSe
Android四大元件應用系列——使用ContentProvider實現跨程序通訊
package com.jereh; public class PersonProvider extends ContentProvider { private DbOpenHelper openHelper; private static final UriMatcher
android四大元件(android應用程式的組成)是什麼,功能分別是?
四大元件分別為activity、service、content provider、broadcast receiver。一、android四大元件詳解1、activity(1)一個Activity通常就是一個單獨的螢幕(視窗)。(2)Activity之間通過Intent進行通
Android 四大元件之Service使用及特點
1. 生命週期 常用方法 官方說明圖 示意圖 在Service的生命週期裡,常用的有: 4個手動呼叫的方法 手動呼叫方法 作用 startService() 啟動服務 stopService() 關閉服務 bindService
Android四大元件——BroadcastReceiver(原理篇)
前言 Android四大元件——BroadcastReceiver(基礎篇)裡面介紹了BroadcastReceiver相關的基礎知識,本文將從Android 8.0原始碼來分析一下廣播的註冊和接收原理。 BroadcastReceiver的註冊 Android系統中Broa
《瞭解Android四大元件 》的補充
Activity View元件是所有UI控制元件、容器控制元件的基類,View元件就是Android應用中使用者實實在在看到的部分。但View元件需要放到容器元件中,或者使用Activity將它顯示出來。如果需要通過某個Activity把指定的View顯示出來,呼叫Activit
瞭解Android四大元件
Activity 用途:Activity是一個應用程式元件,其所有操作都與使用者密切相關,它提供一個螢幕,在此進行使用者互動從而完成某項任務。(是使用者操作的視覺化介面;它為使用者提供了一個完成操作指令的視窗)在一個android應用中,一個Activity通常就是一個單獨的螢幕,它上面
Android 四大元件中 android:exported 屬性詳解
當我們在用360等檢測軟體掃描應用漏洞時,掃描結果可能歸類為安全漏洞,涉及一個Android:exported屬性,這個屬性究竟是用來幹嘛的呢,詳情見下圖: 因此,查了官方API,學習了一下這個屬性! android:exported 是Android中的四大元件 Ac
Android 四大元件之Service的啟動、繫結小述
一、概述 學習過Android的小夥伴就不可能不知道Service是什麼,因為Service是Android四大元件之一,聲名赫赫有木有,所以在這裡我就不詳細介紹了,本節主要還是充當筆記的作用,因為我待記性如初戀,記性虐我千百遍。 二、Service的建立 Service是一
Android 四大元件之——Service(一)
一、什麼是服務 服務,是Android四大元件之一, 屬於 計算型元件。 長期後臺執行的沒有介面的元件 ,特點是無使用者介面、在後臺執行、生命週期長 二,什麼時候使用服務?  
Android 四大元件之——Acitivity(四) Activity是如何載入顯示內容的?
1. 在Activity呼叫onCreate()等生命週期之前,Activity會呼叫attach()方法,而在attach()方法中會呼叫如下程式碼 onAttach() { PolicyManager.makeNewWindow(this) }而makeNewWindow實際