導航:首頁 > 知識產權 > androidn第三版許可權變更

androidn第三版許可權變更

發布時間:2021-07-16 14:07:41

㈠ 適配Android N 需要注意什麼

1. Android 中 Java 的實現向 OpenJDK 8 遷移

android 是站在 Linux 和 Java 肩膀上快速成長的,在運行時依賴 Oracle JDK,早在 2010 年甲骨文就起訴谷歌侵權 Java。在 N 中 Google 採用 OpenJDK 8 作為 Java 的實現,在 Java 實現上的一些差別可能導致應用出問題。如:

(1) ArrayList 實現中的私有屬性 array 被移除

反射使用該屬性的需要注意下

(2) 隨機數種子調用可能出錯

Crypto 安全提供商在 OpenJDK 中不提供,而它在大家調用 SecureRandom.setSeed() 設置隨機種子時會用到,OpenJDK 中需要通過 SecretKeySpec 去直接載入原始密鑰或者使用真正的密鑰導出函數。

有了解 OpenJDK 8 與 oracle JDK 更多實現差別的歡迎留言。

2. JNI 中不允許調用非公有 API

JNI 中不允許調用非公有 API,由於命名空間的變化,在 Android N 上運行會崩潰,需要切換到對應公有 API。

3. 「老人機的適配」

Android N 允許用戶設置顯示密度,有點像老人機模式。需要測試 App 在 sw320dp 密度下顯示是否正常,及配置變更後應用是否會有異常。

4. 後台優化——三個廣播被禁止監聽或發送

(1) CONNECTIVITY_CHANGE 廣播

對 targetVersion 設置為 Android N 的 App,在後台時不再能接收到 CONNECTIVITY_CHANGE 廣播,前台不影響。

(2) ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播

所有運行在 Android N 上的 App 不能發送或是接收新增圖片(ACTION_NEW_PICTURE)和新增視頻(ACTION_NEW_VIDEO) 的廣播。

5. 許可權改動

(1) GET_ACCOUNTS 許可權被廢棄

對 targetVersion 設置為 Android N 的 App,GET_ACCOUNTS 許可權被廢棄。

(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 許可權

這個感覺就是對部存儲設備寫許可權的保護,需要用戶同意,說不定以後就慢慢廢棄 WRITE_EXTERNAL_STORAGE 許可權了。

6. 更嚴格的 Doze 模式

大家知道在 Android 6.0 中,在手機關屏且靜止時,Doze 模式通過推遲 CPU 和網路操作延長底池壽命。而 Android N 則在手機關屏時就會一定程度限制 CPU 和網路操作,進入 Doze 模式一段時間後進一步限制 WakeLock、Alarm、GPS 和 Wi-Fi 掃描等,做好迎接休眠狀態下更多功能受限導致的 bug 吧。

7. 自帶 ICU4J 庫的子集

更方便 App 的全球化了

㈡ 如何適配適配 Android N

Android N 這次的新特性包括多窗口的支持、通知欄支持直接回復消息、對部分廣播的後台限制、網路數據節省開關等,並不多,也有很多翻譯文章已經介紹。

這里主要分享對 Android N 的適配大家可能要注意什麼。
文末雜談帶阿里騰訊保障員工買房相關的福利介紹。

還記得 6.0 對 Apache Http 庫的廢除導致的應用崩潰嗎?
還記得 6.0 中 MAC id 始終返回為空導致的唯一 id 混合生成演算法大幅失效嗎?

1. Android 中 Java 的實現向 OpenJDK 8 遷移
Android 是站在 Linux 和 Java 肩膀上快速成長的,在運行時依賴 Oracle JDK,早在 2010 年甲骨文就起訴谷歌侵權 Java。在 N 中 Google 採用 OpenJDK 8 作為 Java 的實現,在 Java 實現上的一些差別可能導致應用出問題。如:
(1) ArrayList 實現中的私有屬性 array 被移除
反射使用該屬性的需要注意下。

(2) 隨機數種子調用可能出錯
Crypto 安全提供商在 OpenJDK 中不提供,而它在大家調用 SecureRandom.setSeed() 設置隨機種子時會用到,OpenJDK 中需要通過 SecretKeySpec 去直接載入原始密鑰或者使用真正的密鑰導出函數。

有了解 OpenJDK 8 與 Oracle JDK 更多實現差別的歡迎留言。

PS:
(1) 記得 2014 年 InfoQ 大會上 Oracle 的人介紹 Java 8 的特性,當時還在想 Android 現在依賴 JDK6.0 什麼時候才能到 8,現在終於等到了這一天,可惜不是你..

(2) Kotlin 還有機會嗎?

2. JNI 中不允許調用非公有 API
JNI 中不允許調用非公有 API,由於命名空間的變化,在 Android N 上運行會崩潰,需要切換到對應公有 API。

3. 「老人機的適配」
Android N 允許用戶設置顯示密度,有點像老人機模式。需要測試 App 在 sw320dp 密度下顯示是否正常,及配置變更後應用是否會有異常。

4. 後台優化——三個廣播被禁止監聽或發送
(1) CONNECTIVITY_CHANGE 廣播
對 targetVersion 設置為 Android N 的 App,在後台時不再能接收到 CONNECTIVITY_CHANGE 廣播,前台不影響。

(2) ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播
所有運行在 Android N 上的 App 不能發送或是接收新增圖片(ACTION_NEW_PICTURE)和新增視頻(ACTION_NEW_VIDEO) 的廣播。

5. 許可權改動
(1) GET_ACCOUNTS 許可權被廢棄
對 targetVersion 設置為 Android N 的 App,GET_ACCOUNTS 許可權被廢棄。

(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 許可權
這個感覺就是對部存儲設備寫許可權的保護,需要用戶同意,說不定以後就慢慢廢棄 WRITE_EXTERNAL_STORAGE 許可權了。

6. 更嚴格的 Doze 模式
大家知道在 Android 6.0 中,在手機關屏且靜止時,Doze 模式通過推遲 CPU 和網路操作延長底池壽命。而 Android N 則在手機關屏時就會一定程度限制 CPU 和網路操作,進入 Doze 模式一段時間後進一步限制 WakeLock、Alarm、GPS 和 Wi-Fi 掃描等,做好迎接休眠狀態下更多功能受限導致的 bug 吧,哈哈。

7. 自帶 ICU4J 庫的子集
更方便 App 的全球化了

㈢ 關於手機Android版本及ROOT許可權問題

第一個疑問----友友你好,你的手機版本為歐版,生產日期為2011年第一季度左右(來自國際移動設備身份碼查詢網站)。
第二個疑問----Nexus S的安卓4.0雖然已經推出,可是它的推送卻已經因為新系統存在bug而暫停,所以友友暫時不能通過【系統更新】來獲取更新。
第三個疑問----Nexus S獲取root的詳細教程:友友可以通過網路搜索【手機掃盲與ROOT 解鎖 刷機 全教程】,第一個點擊進去就是Nexus S的詳細root教程了。刷機其實並不可怕,只要認真按照教程來進行操作,99%都是成功的哦!

㈣ 安卓系統如何在不改變本機自帶系統的前提下root獲取高許可權,對root、rom和系統的關系不是很明了。求姐濕。。

這么給你說吧 root之後 就相當於windows系統取得了管理員許可權 可以對系統做任何更改 當然你不改就不會有問題 安卓手機如果不root的話 等於半廢品 很多功能都需要root
下面是ram和rom 那pc來比喻 ram相當於內存條 rom相當於硬碟 網上經常說的刷rom 和這個不是一個概念 他們說的是往手機rom(硬碟)裡面刷入rom包 所謂rom 其實就是系統程序壓縮包 裡面含有操作系統必須的軟體和驅動 網上都說刷機有風險 但是實際驗證 可以忽略 我的是u880 國產的垃圾安卓機器 刷機不下於20次了 沒有出過一次問題 這好像不能說我運氣好吧

㈤ 各位大大,Android我想做了一個自己的安裝apk,改造原生的,顯示應用所具有的許可權的時候代碼為

這種情況下,就不能使用AppSecurityPermissions ,而需要用如下的方法(僅供參考):
private void getPermisson(Context context) {
try {
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
// 得到自己的包名
String pkgName = pi.packageName;

PackageInfo pkgInfo = pm.getPackageInfo(pkgName,
PackageManager.GET_PERMISSIONS);//通過包名,返回包信息
String sharedPkgList[] = pkgInfo.requestedPermissions;//得到許可權列表

for (int i = 0; i < sharedPkgList.length; i++) {
String permName = sharedPkgList[i];

PermissionInfo tmpPermInfo = pm.getPermissionInfo(permName, 0);//通過permName得到該許可權的詳細信息
PermissionGroupInfo pgi = pm.getPermissionGroupInfo(
tmpPermInfo.group, 0);//許可權分為不同的群組,通過許可權名,我們得到該許可權屬於什麼類型的許可權。

tv.append(i + "-" + permName + "\n");
tv.append(i + "-" + pgi.loadLabel(pm).toString() + "\n");
tv.append(i + "-" + tmpPermInfo.loadLabel(pm).toString()+ "\n");
tv.append(i + "-" + tmpPermInfo.loadDescription(pm).toString()+ "\n");
tv.append(mDivider + "\n");

}
} catch (NameNotFoundException e) {
Log.e("##ddd", "Could'nt retrieve permissions for package");

}
}

這種情況下,你可以自由處理你所需要的信息。
參考~http://blog.csdn.net/bage1988320/article/details/6740292

㈥ android N 內置可卸載app

方法一

直接使用Intent卸載

Uri uri = Uri.fromParts("package", "com.example.demo", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
startActivity(intent);123

這是最簡單的方式,調用卸載方法系統會彈出卸載APP對話框,點擊確定就會立即卸載,不需要額外許可權

方法二

使用PackageManager靜默卸載

谷歌認為該方法是不安全的行為,因此該介面是@hide的,不是公開的介面,調用此介面需要有系統簽名和相應的系統級許可權

具體來說就是需要
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>許可權,但<uses-permission android:name="android.permission.DELETE_PACKAGES"/>是系統級許可權,普通APP根本無法獲取到,如果在AndroidManifest.xml強行加入該許可權編譯也不會通過

唯一的辦法就是使用APK反編譯工具在Android Studio之外修改許可權,比如用apktool反編譯工具先把apk文件解壓出來,用編輯器在AndroidManifest.xml中加入上面的兩個許可權,然後在用工具apktool重新打包

獲得<uses-permission android:name="android.permission.DELETE_PACKAGES"/>許可權後,定義PackageDeleteObserver實現類,實現packageDeleted方法

private class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
private int position;
private int mFlag;

public PackageDeleteObserver(int index, int flag) {
position = index;
mFlag = flag;// 0卸載1個包,1卸載N個包 N>1
}

@Override
public void packageDeleted(String arg0, int arg1)
throws RemoteException {
// TODO Auto-generated method stub
Message msg;
msg = mHandle.obtainMessage();
msg.what = FLAG_DELETE_VIRUS;
msg.arg1 = position;
msg.arg2 = mFlag;
msg.sendToTarget();
}
}

獲取PackageManager 對象,調用deletePackage方法

PackageManager pkgManager = mContext.getPackageManager();
PackageDeleteObserver observer = new PackageDeleteObserver(currVirus, 1);
pkgManager.deletePackage(pakName, observer, 0); 123

最後,還需要進行系統簽名才能使用

對apk進行系統簽名:

java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test_signed.apk1

將簽名之後的文件 push到手機中,需要root許可權

方法三

通過pm命令方式實現靜默卸載

該方法直接對Android系統執行卸載命令,需要root許可權

//pm命令可以通過adb在shell中執行,同樣,我們可以通過代碼來執行 public static String execCommand(String... command) {
Process process = null;
InputStream errIs = null;
InputStream inIs = null;
String result = ""; try {
process = new ProcessBuilder().command(command).start();
ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read = -1;
errIs = process.getErrorStream(); while ((read = errIs.read()) != -1) {
baos.write(read);
}
inIs = process.getInputStream(); while ((read = inIs.read()) != -1) {
baos.write(read);
}
result = new String(baos.toByteArray()); if (inIs != null)
inIs.close(); if (errIs != null)
errIs.close();
process.destroy();
} catch (IOException e) {

result = e.getMessage();
} return result;
}222324252627282930

執行卸載命令

execCommand("pm","uninstall", "packageName");1

編譯生成apk時,要在manifest文件下添加Android:sharedUserId=」android.uid.system」

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xieyuan.mhfilemanager"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly"
android:sharedUserId="android.uid.system" >

㈦ 為什麼再更新設備時,提示「軟體更新服務的許可權按請求的順序提供給用戶。稍後重試」該怎麼辦N-8000

您好,感謝您使用三星產品!
1.目前此款手機為Android 4.1.1操作系統,檢查更新時提示更新按順序提供,說明您的手機存在更新的軟體版本可用,此更新是對於一些軟體功能參數的優化,您的更新請求已成功投遞,但因伺服器原因有可能不能馬上提供更新服務,建議稍後再次嘗試。
2.手機存在更新的軟體版本時,除了使用手機中的系統更新外,您還可以通過Kies軟體升級手機,或者將手機送到三星服務中心,由工程師幫助升級手機。相關三星指定授權服務中心信息,請登陸以下網址來查看:
http://www.samsung.com/cn/support/location/supportServiceLocation.do?page=SERVICE.LOCATION&cid=cn_ppc_support_service_repairnet_120522
以上回復希望對您有所幫助,謝謝!

歡迎登陸三星數字服務平台提問:http://support.samsung.com.cn/ask

㈧ 開發者選項按照網上的操作,點擊Android版本N次,換各種點擊方式都無法打開開發者選項請問如何打開

嗨!
你的手機是在哪裡買的啊?

㈨ 我想修改安卓狀態欄上時間的顏色 但改好後的services.jar 應該怎麼覆蓋原文件 許可權怎麼改

可能你的方法不正確,沒有理解教程。或者有的方法是有概率性的,不保證百分之百成功,我也遇到過這種情況,在論壇里在找其他方法吧。

㈩ 獲得root許可權後還能將安卓版本升級嗎

只要你沒有把原本系統自帶的升級軟體刪除,那就可以繼續升級。跟root無關。如果你刪除了升級插件,那想要自動升級就只能刷機了

閱讀全文

與androidn第三版許可權變更相關的資料

熱點內容
矛盾糾紛排查調處信息 瀏覽:714
貴州注冊土木工程師岩土證書領取時間 瀏覽:829
買家投訴發票 瀏覽:251
普通護照的期限 瀏覽:766
發明文言文 瀏覽:523
國培線下專題研修成果 瀏覽:577
馬鞍山蘇叢勇 瀏覽:109
人民的名義侵權問題 瀏覽:53
全椒到馬鞍山汽車時刻表 瀏覽:899
logo可用字體版權 瀏覽:861
馬鞍山中豪 瀏覽:929
tefl證書在哪裡考 瀏覽:564
小陸離與成果 瀏覽:654
迷你世界冒險轉化創造 瀏覽:680
2014納稅申報期限 瀏覽:274
lol2016猴年限定皮膚 瀏覽:48
陝西房地產估價師證書領取地點 瀏覽:140
證書小知識 瀏覽:431
馬鞍山何兵 瀏覽:376
設計創作版權合作合同範本 瀏覽:482