關於app權限問題

之前寫了一個獲取當前界面獲取UI控件的狀態的app,是一個test app,沒有activity.

1. 動態獲取權限

我們在安裝apk完成之後,經常會見到有彈框提示是否允許訪問存儲空間,還有是否允許獲取聯繫人等。這個就是動態給apk權限。

這個動態權限的給定應該是要依賴於activity的。 因爲我的app沒有activity,所以一直沒法添加成功。具體添加的方法網上有很多。

2.在setting裏面給存儲權限

在setting裏面應用->權限->應用權限管理->權限管理->讀寫手機存儲->選中我要設定權限的app (各家手機略有區別,過程大同小異)。

可以這這裏修改權限的前提是在AndroidManifest.xml裏面添加了下面兩行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

不然,你會發現在修改應用存儲權限的界面中根本就沒有這個app的。

當然,手動點擊還是比較麻煩了點。想要實現完全自動化,還是有點辦法的:使用uiautomator中的一些接口,可以使用在當前UI界面中獲取到某個特定的控件,然後可以點擊這個控件。

具體做法可以如下:

        UiScrollable view = new UiScrollable(new UiSelector().scrollable(true));

        UiObject uiautomator = null;

        uiautomator = view.getChildByText(new UiSelector()
                .className("android.widget.TextView"), "UiAutomator");
        uiautomator.click();

上面代碼就是獲取當前可滑動界面中的text="UiAutomator"(我的app的名字)這個node,然後點擊這個控件。

但是最後還是沒有用這個方法,因爲考慮到進入到這個最終修改權限的界面,不能通過am command直接喚起,應該是因爲中間過程需要一些參數,並且不清楚這個參數具體是什麼。所以,倒是可以連續點擊幾次,最終進入這個界面,不過考慮到系統語言可能不同,需要對不同語言進行處理,就比較麻煩了。

 

3.使用pm command給權限

直接上command:

adb shell pm grant apk_name android.permission.READ_EXTERNAL_STORAGE

adb shell pm grant apk_name android.permission.WRITE_EXTERNAL_STORAGE

command能下成功的前提是在AndroidManifest.xml裏面需要添加

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

否則,下command的時候回出現:

Package apk_name has not requested permission android.permission.READ_EXTERNAL_STORAGE

你會發現在兩個command下成功之後,setting裏面進去查看對應app的存儲空間的權限,權限是打開的。

4.直接給系統權限-sign apk

首先,在AndroidManifest.xml裏面的packege="xxx"的後面添加如下內容:

android:sharedUserId="android.uid.system"

然後build出apk,對於test app是有兩個apk的。 分別使用下面的command來sign。

java -jar signapk.jar platform.x509.pem platform.pk8 xx.apk xx_signed.apk 

上面有設計到兩個key,這個是和平臺有關係的。一般不用平臺會不一樣,所以要在不用平臺使用這個app的話,需要分別sign.

這種做法一般都是最後的做法。畢竟一般的app是不配擁有這麼高的權限、也得不到這麼高的權限的。

 

綜上,最終使用的是上面使用pm command來給權限的。方便還用。也可以再不同機種中運行。

邁小步,不停步,堅持必有大進步~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章