出现的bug是:按照流程一步步接入腾讯广告SDK后,也按照注意事项对targetSDKVersion >= 24时的文件访问兼容性做了处理!但是8.0以上的手机仍然会出现当点击下载类广告的时候,下载应用成功但是安装的时候调不起安装应用的界面;
解决方法:添加
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />因为8.0添加了新的安全措施,不允许应用内安装未经过Google play验证的应用;
( 如果您的build.gradle文件中的targetSDKVersion >= 24,为了让SDK能够正常下载、安装App类广告,必须按照腾讯广告中的注意事项分三个步骤做兼容性处理。如果您的targetSDKVersion < 24,不需要做这个兼容处理。)
具体的实现是:
1:在AndroidManifest.xml中的Application标签中添加provider标签,接入代码如下所示:
<application
android:allowBackup="true"
android:icon="@drawable/gdticon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- targetSDKVersion >= 24时才需要添加这个provider。provider的authorities属性的值为${applicationId}.fileprovider,请开发者根据自己的${applicationId}来设置这个值 -->
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/gdt_file_path" />
</provider>
<!-- 声明SDK所需要的组件 -->
<service
android:name="com.qq.e.comm.DownloadService"
android:exported="false"/>
<!-- 请开发者注意字母的大小写,ADActivity,而不是AdActivity -->
<activity
android:name="com.qq.e.ads.ADActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>
... ...
</application>
需要注意的是provider的authorities值为${applicationId}.fileprovider,对于每一个开发者而言,这个值都是不同的,${applicationId}在代码中和Context.getPackageName()值相等,是应用的唯一id。例如GDTUnionDemo示例工程中的applicationId为"com.qq.e.union.demo"。
(2)在项目结构下的res目录下添加一个xml文件夹,再新建一个gdt_file_path.xml的文件,文件内容如下:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 这个下载路径不可以修改,必须是GDTDOWNLOAD -->
<external-path name="gdt_sdk_download_path" path="GDTDOWNLOAD" />
</paths>
(小女子菜鸟一枚,以上问题均是自己开发遇到并解决的,如有不对或有更好的方法请大佬们指教,如对你们有帮助,倍感荣幸)