1. 程式人生 > >Android實現開屏廣告(廣點通SDK)

Android實現開屏廣告(廣點通SDK)

一、註冊騰訊廣告賬號

註冊騰訊廣告聯盟賬號: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。