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自动加载的可选权限方法,去除之后无需添加其他配置功能可以正常使用:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code><span style="color:#ffc66d">permissions</span> {
<span style="color:#6a8759">exclude</span> <span style="color:#6a8759">"需要去除的权限1"</span>, <span style="color:#6a8759">"需要去除的权限2"</span>
}</code></span></span>
比如需要去除掉“android.permission.READ_PHONE_STATE”权限,则直接添加如下配置即可:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code>MobSDK {
appKey <span style="color:#6a8759">"Mob开发者后台申请的AppKey"</span>
appSecret <span style="color:#6a8759">"Mob开发者后台申请的AppSecret"</span>
ShareSDK {
devInfo {
...
}
}
permissions {
exclude <span style="color:#6a8759">"android.permission.READ_PHONE_STATE"</span>,
}
}</code></span></span>
QUERY_ALL_PACKAGES权限去除说明:
Android高版本(Android10以上)判断第三方平台是否安装需要使用QUERY_ALL_PACKAGES权限,如果没有这个权限ShareSDK分享、授权无法使用,不过因为Google商店对QUERY_ALL_PACKAGES权限审核比较严格,如您不希望使用QUERY_ALL_PACKAGES权限,可以使用我们提供exclude的方式去除QUERY_ALL_PACKAGES权限:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code>MobSDK {
appKey <span style="color:#6a8759">"Mob开发者后台申请的AppKey"</span>
appSecret <span style="color:#6a8759">"Mob开发者后台申请的AppSecret"</span>
ShareSDK {
devInfo {
...
}
}
permissions {
exclude <span style="color:#6a8759">"android.permission.QUERY_ALL_PACKAGES"</span>,
}
}</code></span></span>
需要注意的是去除QUERY_ALL_PACKAGES权限之后,需要在Manifest中通过"queries标签"手动配置一下需要使用的第三方平台包名,类似这样:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code> <<span style="color:#e8bf6a">manifest</span> package=<span style="color:#6a8759">"xxxxxx"</span>>
......
<<span style="color:#e8bf6a">queries</span>>
<span style="color:grey"><!--WhatsApp--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.whatsapp"</span> />
<span style="color:grey"><!--Facebook--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.facebook.katana"</span> />
<span style="color:grey"><!--Line客户端--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"jp.naver.line.android"</span> />
<span style="color:grey"><!--Google包名--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.google.android.gm"</span>/>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.google.android.gms"</span>/>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.google.android.apps.plus"</span>/>
<span style="color:grey"><!--Twitter--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.twitter.android"</span> />
<span style="color:grey"><!--WeChat--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.tencent.mm"</span> />
<span style="color:grey"><!--QQ--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.tencent.mobileqq"</span> />
<span style="color:grey"><!--instagram--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.instagram.android"</span> />
<span style="color:grey"><!--FacebookMessenger--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.facebook.orca"</span> />
<span style="color:grey"><!--新浪微博--></span>
<<span style="color:#e8bf6a">package</span> android:name=<span style="color:#6a8759">"com.sina.weibo"</span> />
......
</<span style="color:#e8bf6a">queries</span>>
......
</<span style="color:#e8bf6a">manifest</span>></code></span></span>