亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何利用shared_user_id獲取系統權限

發布時間:2022-04-12 14:11:32 來源:億速云 閱讀:503 作者:iii 欄目:編程語言

本篇內容主要講解“Android中如何利用shared_user_id獲取系統權限”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android中如何利用shared_user_id獲取系統權限”吧!

一、使用同一個shareuserid,多個apk運行到同一個進程,實現多個apk之間的數據訪問

    實現效果:把A.apk assets目錄下的session.log拷貝到/data/data/A包名/目錄下面

A.apk

Android中如何利用shared_user_id獲取系統權限

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.demo1" android:sharedUserId="com.example" android:versionCode="1" android:versionName="1.0" > <uses-sdk     android:minSdkVersion="8"     android:targetSdkVersion="15" /> <application     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <activity           android:name=".MainActivity"           android:label="@string/title_activity_main" >           <intent-filter>           <action android:name="android.intent.action.MAIN" />                     <category             android:name="android.intent.category.LAUNCHER" />           </intent-filter>      </activity>      </application>      </manifest>

B.apk(實現訪問資源并且拷貝)
MainActivity.java

package com.example.demo2;     import java.io.File;     import java.io.FileOutputStream;     import java.io.IOException;     import java.io.InputStream;     import java.io.OutputStream;     import android.os.Bundle;     import android.app.Activity;     import android.content.Context;     import android.content.pm.PackageManager.NameNotFoundException;     import android.view.Menu;     import android.view.MenuItem;     import android.support.v4.app.NavUtils;     public class MainActivity extends Activity {         @Override         public void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.activity_main);             Context context = null;             InputStream input = null;             OutputStream output = null;             try {                 context = this.createPackageContext("com.example.demo1",                         Context.CONTEXT_IGNORE_SECURITY);                 File file = new File("/data/data/com.example.demo1/session.log");                 if (!file.exists()) {                     file.createNewFile();                 }                 input = context.getAssets().open("session.log");                 output = new FileOutputStream(file);                 byte[] buffer = new byte[1024];                 int readLength = 0;                 while((readLength = input.read(buffer)) != -1){                     output.write(buffer, 0, readLength);                 }             } catch (Exception e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }             finally{                 try {                     if(input!=null || output!= null){                         input.close();                         output.close();                         input = null;                         output = null;                     }                 } catch (Exception e2) {                     // TODO: handle exception                 }             }         }               @Override         public boolean onCreateOptionsMenu(Menu menu) {             getMenuInflater().inflate(R.menu.activity_main, menu);             return true;         }           }

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"         package="com.example.demo2"         android:versionCode="1"         android:versionName="1.0"         android:sharedUserId="com.example">         <uses-sdk             android:minSdkVersion="8"             android:targetSdkVersion="15" />         <application             android:icon="@drawable/ic_launcher"             android:label="@string/app_name"             android:theme="@style/AppTheme" >             <activity                 android:name=".MainActivity"                 android:label="@string/title_activity_main" >                 <intent-filter>                     <action android:name="android.intent.action.MAIN" />                     <category android:name="android.intent.category.LAUNCHER" />                 </intent-filter>             </activity>         </application>     </manifest>

A.apk,B.apk使用同一個shareduserid:com.example  
實現效果:

Android中如何利用shared_user_id獲取系統權限

二、通過shareduserid來獲取系統權限
(1)在AndroidManifest.xml中添加android:sharedUserId="android.uid.system"
(2)在Android.mk文件里面添加LOCAL_CERTIFICATE := platform(使用系統簽名)
(3)在源碼下面進行mm編譯
這樣生成的apk能夠獲取system權限,可以在任意system權限目錄下面進行目錄或者文件的創建,其他apk資源的訪問等(注意創建的文件(夾)只有創建者(比如system,root除外)擁有可讀可寫權限-rw-------)。

三、擴展

系統中所有使用android.uid.system作為共享UID的APK,都會首先在manifest節點中增加 android:sharedUserId="android.uid.system",然后在Android.mk中增加 LOCAL_CERTIFICATE := platform。可以參見Settings等

系統中所有使用android.uid.shared作為共享UID的APK,都會在manifest節點中增加 android:sharedUserId="android.uid.shared",然后在Android.mk中增加 LOCAL_CERTIFICATE := shared。可以參見Launcher等

系統中所有使用android.media作為共享UID的APK,都會在manifest節點中增加 android:sharedUserId="android.media",然后在Android.mk中增加LOCAL_CERTIFICATE  := media。

到此,相信大家對“Android中如何利用shared_user_id獲取系統權限”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 南陵县| 出国| 寿阳县| 贵州省| 翼城县| 鄄城县| 那坡县| 三台县| 三门峡市| 石门县| 利辛县| 汽车| 彭泽县| 东兴市| 隆化县| 静安区| 乐安县| 雅安市| 化德县| 洮南市| 桑日县| 普兰县| 琼结县| 东方市| 拉萨市| 马尔康县| 晋宁县| 新野县| 庆安县| 江阴市| 澎湖县| 湄潭县| 禹城市| 新营市| 景洪市| 海盐县| 象州县| 珲春市| 西畴县| 阜康市|