2

Fortumoサービスでアプリ内クレジットを購入できるアプリケーションを作成しようとしています。私はなんとかmakePayment()を取得できました。私が支払いをすることができるように働く方法とすべてがうまくいくようです。唯一のことは、onReceive()のように見えることです。支払いが成功してもクレジット数は変更されないため、は呼び出されません。クレジット数は、0.32€の1回の支払いで32000増加する必要があります。

主なアクティビティjavaは次のとおりです。

package com.your.raha;
import com.your.raha.R;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

public class Soundboard extends Activity {
private SoundManager mSoundManager;
static int counter;
static TextView display;
SharedPreferences someData;
public static String filename = "rahafail";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    setContentView(R.layout.proov);
    display = (TextView) findViewById(R.id.tvKonto);
    someData = getSharedPreferences(filename, 0);
    int returnedInt = someData.getInt("sharedInt", 0);
    counter = returnedInt;

    mSoundManager = new SoundManager();
    mSoundManager.initSounds(getBaseContext());
    mSoundManager.addSound(1, R.raw.sound1);

    Button SoundButton1 = (Button)findViewById(R.id.sound1);
    SoundButton1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
    mSoundManager.playSound(1);
    AddOne();           
}
});       

    Button bOsta = (Button)findViewById(R.id.bOsta);
    bOsta.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            onStop();
            startActivity(new Intent("com.uugudev.rahaboss.FORTUMOMAKSA"));


        }
    });
    ImageButton Abi = (ImageButton)findViewById(R.id.ibAbi);
    Abi.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            counter = 0;
          SharedPreferences.Editor editor = someData.edit();
        editor.putInt("sharedInt", counter);
        editor.commit();    
      display.setText(counter + " EEK");    

        }
    });


}
public static void AddOne() {
    // TODO Auto-generated method stub
    counter++;
    display.setText(counter + " EEK");
}

public static void Osteti() {
// TODO Auto-generated method stub
counter = counter + 32000;
display.setText(counter + " EEK");
}   

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub  
super.onDestroy();
SharedPreferences.Editor editor = someData.edit();
editor.putInt("sharedInt", counter);
editor.commit();

}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
SharedPreferences.Editor editor = someData.edit();
editor.putInt("sharedInt", counter);
editor.commit();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
int returnedInt = someData.getInt("sharedInt", 0);
counter = returnedInt;
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
SharedPreferences.Editor editor = someData.edit();
editor.putInt("sharedInt", counter);
editor.commit();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
display.setText(counter + " EEK");
}
}

支払活動クラス:

package com.your.raha;

import android.os.Bundle;
import android.view.Window;
import android.widget.Toast;

import com.fortumo.android.Fortumo;
import com.fortumo.android.PaymentActivity;
import com.fortumo.android.PaymentRequestBuilder;
import com.fortumo.android.PaymentResponse;

public class FortumoMaksa extends PaymentActivity {
/** Called when the activity is first created. */

public int raha;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    Fortumo.enablePaymentBroadcast(this, Manifest.permission.PAYMENT_BROADCAST_PERMISSION);


        PaymentRequestBuilder builder = new PaymentRequestBuilder();
        builder.setDisplayString("Donate");
                                builder.setProductName("stars_myawesomeusername");
        makePayment(builder.build());
      }
    ;
    @Override
    protected void onResume() {
      super.onResume();

    }

    @Override
    protected void onPaymentCanceled(PaymentResponse response) {
        Toast.makeText(this, "Kasutaja katkestas makse", Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    protected void onPaymentFailed(PaymentResponse response) {
        Toast.makeText(this, "Makse ebaõnnestus", Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    protected void onPaymentPending(PaymentResponse response) {
        Toast.makeText(this, "Makse ootel", Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    protected void onPaymentSuccess(PaymentResponse response) {
        Toast.makeText(this, "Makse õnnestus", Toast.LENGTH_SHORT).show();
        finish();
    }
}

PaymentStatusReceivedクラス:

package com.your.raha;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.fortumo.android.Fortumo;


public class PaymentStatusReceiver extends BroadcastReceiver {
private static String TAG = "PaymentStatusReceiver";

@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();   
int billingStatus = extras.getInt("billing_status");
if(billingStatus == Fortumo.MESSAGE_STATUS_BILLED) {
  Soundboard.Osteti();
    } 
  }
}

AndroidManifest xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.your.raha"
android:installLocation="auto"
android:versionCode="2"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />

<permission
    android:name="com.your.domain.PAYMENT_BROADCAST_PERMISSION"
    android:label="Read Fortumo payment status"
    android:protectionLevel="signature" />

<uses-permission android:name="com.your.raha.PAYMENT_BROADCAST_PERMISSION" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <receiver android:name="com.fortumo.android.BillingSMSReceiver" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

    <service android:name="com.fortumo.android.FortumoService" />
    <service android:name="com.fortumo.android.StatusUpdateService" />

    <activity
        android:name="com.fortumo.android.FortumoActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <receiver
        android:name=".PaymentStatusReceiver"
        android:permission="com.your.raha.PAYMENT_BROADCAST_PERMISSION" >
        <intent-filter>
            <action android:name="com.fortumo.android.PAYMENT_STATUS_CHANGED" />
        </intent-filter>
    </receiver>

    <activity
        android:name="com.fortumo.android.FortumoActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <activity
        android:name=".PaymentStatusReceiver"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.uugudev.rahaboss.PAYMENTSTATUSRECEIVER" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.google.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
    <activity
        android:name="com.fortumo.android.FortumoActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    <service android:name="com.fortumo.android.FortumoService" />

    <activity
        android:name=".Soundboard"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />

            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".FortumoMaksa"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.uugudev.rahaboss.FORTUMOMAKSA" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

つまり、基本的に私はSoundboard.Osteti();を起動しようとしています。Soundboard.javaで、32000をcounter intに追加してから、TextViewを更新します。しかし、何も起こりません。誰かが私を助けてくれることを願っています。ありがとう!

4

1 に答える 1

0

私はまだこれを機能させようとしています。マニフェストに間違っていると思う次のことがあります。

PaymentStatusReceiver はアクティビティではありません。これをレシーバーとして構成するだけで済みます (既に行っているように)。

于 2012-09-18T19:30:58.173 に答える