Android實現開屏廣告(廣點通SDK)
阿新 • • 發佈:2018-11-11
一、註冊騰訊廣告賬號
註冊騰訊廣告聯盟賬號:http://e.qq.com/dev/index.html
二、新建廣告位
新建廣告位並下載SDK,記住自己的廣告位ID和應用ID。
三、接入SDK
1、解壓SDK,將jar檔案複製到libs目錄中,點選sync按鈕(as頂部工具欄)。在AndroidManifest.xml中宣告許可權。
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"/>
2、然後在<application>標籤中加入:
<!-- 騰訊宣告SDK所需要的元件 --> <service android:name="com.qq.e.comm.DownloadService" android:exported="false" > </service> <!-- 請開發者注意字母的大小寫,ADActivity,而不是AdActivity --> <activity android:name="com.qq.e.ads.ADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" > </activity>
3、新建SplashActivity,佈局檔案activity_splash.xml,程式碼如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
4、SplashActivity程式碼如下:
public class SplashActivity extends AppCompatActivity { private RelativeLayout container; private boolean canJump; @SuppressLint("WrongViewCast") @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash1); container = (RelativeLayout) findViewById(R.id.container); //執行時許可權處理 List<String> permissionList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); } if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!permissionList.isEmpty()){ String [] permissions = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(this,permissions,1); }else{ requestAds(); } } /* * * 請求開屏廣告 * */ private void requestAds() { String appId="1106336831"; String adId = "5020929588094641"; new SplashAD(this, container, appId, adId, new SplashADListener() { @Override public void onADDismissed() { //廣告顯示完畢 forward(); } @Override public void onNoAD(AdError adError) { //廣告載入失敗 forward(); } @Override public void onADPresent() { //廣告載入成功 } @Override public void onADClicked() { //廣告被點選 } @Override public void onADTick(long l) { } }); } @Override protected void onPause() { super.onPause(); canJump = false; } @Override protected void onResume() { super.onResume(); if(canJump) { forward(); } canJump = true; } private void forward() { if (canJump){ //跳轉到MainActivity Intent intent = new Intent(this,MainActivity.class); startActivity(intent); finish(); }else { canJump = true; } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if (grantResults.length>0){ for(int result:grantResults){ if (result != PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"必須同意所有許可權才能使用本程式", Toast.LENGTH_SHORT).show(); finish(); return; } } requestAds(); }else { Toast.makeText(this,"發生未知錯誤",Toast.LENGTH_SHORT).show(); finish(); } break; default: } } }
5、最後將主活動設定為SplashActivity,將AndroidManifest裡activity中的.MainActivity修改為.SplashActivity。