Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用内计费-购物车中的多个SKU_Android_In App Billing - Fatal编程技术网

Android应用内计费-购物车中的多个SKU

Android应用内计费-购物车中的多个SKU,android,in-app-billing,Android,In App Billing,我正在为我的音乐学校老师开发一个android应用程序,他想以PDF格式出售印度电影音乐的音乐安排,供钢琴演奏者演奏。我设计了一个歌曲列表视图,列表中的每个项目都提供了一个选项,用户可以在购物车中添加/删除音乐表 我已经创建了我的谷歌控制台开发者帐户,并附加了一个商户帐户。我已经为我的应用程序中的每个可用音乐表创建了托管应用程序内产品 每个列表项的数据都是从下面的歌曲类创建的 public class Song { private String songID; private i

我正在为我的音乐学校老师开发一个android应用程序,他想以PDF格式出售印度电影音乐的音乐安排,供钢琴演奏者演奏。我设计了一个歌曲列表视图,列表中的每个项目都提供了一个选项,用户可以在购物车中添加/删除音乐表

我已经创建了我的谷歌控制台开发者帐户,并附加了一个商户帐户。我已经为我的应用程序中的每个可用音乐表创建了托管应用程序内产品

每个列表项的数据都是从下面的歌曲类创建的

public class Song {
    private String songID;
    private int filmImageID;
    private String songName;
    private String movieName;
    private String composerName;
    private String yearReleased;
    private int songPrice;  
    private int mp3File;    
    private Boolean isPlaying;
    private Boolean inCart; 

    public Song(String songID, int filmImageID, String songName, String movieName, String composerName,
            String yearReleased, int songPrice, int mp3File, Boolean isPlaying, Boolean inCart) {
        super();
        this.songID = songID;
        this.filmImageID = filmImageID;
        this.movieName = movieName;
        this.songName = songName;
        this.composerName = composerName;
        this.yearReleased = yearReleased;
        this.songPrice = songPrice;
        this.mp3File = mp3File;     
        this.isPlaying=isPlaying;
        this.inCart=inCart;
    }
我已经创建了一个Song类类型的ArrayList,并向其中添加了如下所述的对象

private ArrayList<Song> songsList = new ArrayList<Song>();
songsList.add(new Song("song1_v1",R.drawable.msv_periya_idhuthu_pen,"Andru Vandhadhum Adhey Nila","Periya Idhuthu Pen","M.S. Viswanathan","1963",250,R.raw.msv_andru_vanthathum_athe_nila_pip_1963_200,false,false));
        songsList.add(new Song("song22_v2",R.drawable.msv_paalum_pazhamum,"Aalaiya Maniyin Oosai","Paalum Pazhamum","M.S. Viswanathan","1961",120,R.raw.msv_aalayamaniyin_oosai_pp_1961_120,false,false));
有一个名为imgPayNow的ImageView,用于在用户选择所需的音乐表后执行购买。imgPayNow的代码如下所示

imgPayNow = (ImageView) findViewById(R.id.imgPayNow);
imgPayNow.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if(cartList.size()<1){
            Toast.makeText(MusicSheets.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
            return;
        }

        IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {               

            @Override
            public void onIabPurchaseFinished(IabResult result, Purchase info) {
                if (result.isFailure()) {
                    Toast.makeText(MusicSheets.this, "Fail", Toast.LENGTH_SHORT).show();
                    return;
                }   
            }
        };

        for(int i=0;i<cartList.size();i++){
            if (mHelper != null) mHelper.flagEndAsync();
            mHelper.launchPurchaseFlow(MusicSheets.this, cartList.get(i), 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
        }
    }
});
imgPayNow=(ImageView)findViewById(R.id.imgPayNow);
imgPayNow.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){

但是,如果(cartList.size()已经有很长一段时间没有处理应用内购买了,那么现在还不支持批量购买,您必须为每个项目调用
launchPurchaseFlow
。Hi Jay Soyer,我对javax.mail.AuthenticationFailedException提出了一个问题。您能回答吗?
imgPayNow = (ImageView) findViewById(R.id.imgPayNow);
imgPayNow.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if(cartList.size()<1){
            Toast.makeText(MusicSheets.this, "Your cart is empty", Toast.LENGTH_SHORT).show();
            return;
        }

        IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {               

            @Override
            public void onIabPurchaseFinished(IabResult result, Purchase info) {
                if (result.isFailure()) {
                    Toast.makeText(MusicSheets.this, "Fail", Toast.LENGTH_SHORT).show();
                    return;
                }   
            }
        };

        for(int i=0;i<cartList.size();i++){
            if (mHelper != null) mHelper.flagEndAsync();
            mHelper.launchPurchaseFlow(MusicSheets.this, cartList.get(i), 10001, mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
        }
    }
});