1. 程式人生 > >Android的四大元件及應用安裝安全問題(4)

Android的四大元件及應用安裝安全問題(4)

Android的四大元件及元件間通訊

如果想對四大元件有深入的瞭解,那永遠不要停留在一些條條幹乾的SDK API的認識,需要了解他的通訊,他的複用,他的邊界問題,這樣才會對四大元件有透明的認識.

四大元件簡潔

  • Activity

    • 沒有Activity 可以顯示UI嗎?
      可以的,我們可以直接操作view顯示,其實Activity 只是為了讓這些view 富有邏輯的意義,也就是說Activity 主要是讓這些邏輯相關的view 抽象成一個一個相關page,這樣就可以使這些page進行前進後退等邏輯行為.
  • 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 內部會呼叫PackageManagerServiceInstall 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實際