ShareSDK Android端許可權說明

語言: CN / TW / HK

ShareSDK使用許可權情況

許可權

許可權說明

是否必須

INTERNET

允許應用程式聯網

必須

ACCESS_NETWORK_STATE

允許訪問網路狀態

必須

READ_PHONE_STATE

讀取裝置標識

非必須

WRITE_EXTERNAL_STORAGE

用於快取分享圖片、log日誌和裝置標識,以及檔案鎖的使用

非必須

ACCESS_FINE_LOCATION

用於分享SDK管理後臺的區域分析功能展示

非必須

ACCESS_COARSE_LOCATION

用於分享SDK管理後臺的區域分析功能展示

非必須

QUERY_ALL_PACKAGES

用於高版本Android系統手機中判斷第三方平臺是否安裝

非必須(Android10以上的版本需要)

去除非必須的許可權

普通許可權去除

可以在module模組中的build.gradle檔案中新增以下的配置去除Gradle自動載入的可選許可權方法,去除之後無需新增其他配置功能可以正常使用:

permissions {
    exclude "需要去除的許可權1", "需要去除的許可權2"
}

比如需要去除掉“android.permission.READ_PHONE_STATE”許可權,則直接新增如下配置即可:

MobSDK {
    appKey "Mob開發者後臺申請的AppKey"
    appSecret "Mob開發者後臺申請的AppSecret"
    ShareSDK {
        devInfo {
            ...
        }
    }

    permissions {
        exclude "android.permission.READ_PHONE_STATE",
    }
}

QUERY_ALL_PACKAGES許可權去除說明:

Android高版本(Android10以上)判斷第三方平臺是否安裝需要使用QUERY_ALL_PACKAGES許可權,如果沒有這個許可權ShareSDK分享、授權無法使用,不過因為Google商店對QUERY_ALL_PACKAGES許可權稽核比較嚴格,如您不希望使用QUERY_ALL_PACKAGES許可權,可以使用我們提供exclude的方式去除QUERY_ALL_PACKAGES許可權:

MobSDK {
    appKey "Mob開發者後臺申請的AppKey"
    appSecret "Mob開發者後臺申請的AppSecret"
    ShareSDK {
        devInfo {
            ...
        }
    }

    permissions {
        exclude "android.permission.QUERY_ALL_PACKAGES",
    }
}

需要注意的是去除QUERY_ALL_PACKAGES許可權之後,需要在Manifest中通過"queries標籤"手動配置一下需要使用的第三方平臺包名,類似這樣:

 <manifest package="xxxxxx"> 
......
<queries>
    <!--WhatsApp-->
    <package android:name="com.whatsapp" />
    <!--Facebook-->
    <package android:name="com.facebook.katana" />
    <!--Line客戶端-->
    <package android:name="jp.naver.line.android" />
    <!--Google包名-->
    <package android:name="com.google.android.gm"/>
    <package android:name="com.google.android.gms"/>
    <package android:name="com.google.android.apps.plus"/>
    <!--Twitter-->
    <package android:name="com.twitter.android" />
    <!--WeChat-->
    <package android:name="com.tencent.mm" />
    <!--QQ-->
    <package android:name="com.tencent.mobileqq" />
    <!--instagram-->
    <package android:name="com.instagram.android" />
    <!--FacebookMessenger-->
    <package android:name="com.facebook.orca" />
    <!--新浪微博-->
    <package android:name="com.sina.weibo" />
    ......
 </queries>
......
</manifest>