注意事项:
1.电信要求必须先启动电信的闪屏界面
2.非网络游戏不允许有Interent权限
3.电信没有提供测试计费点(小于一元的),文中index1是一个真实计费点(2元),支付会进行真实计费
- AndroidManifest.xml:
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.example.blogfordx.MainActivity"
- android:label="@string/app_name" >
- </activity>
- <!-- 电信 -->
- <activity android:name="cn.game189.sms.SMS" android:theme="@android:style/Theme.Dialog" android:screenOrientation="portrait" ></activity>
- <!-- 电信 -->
- <!-- 启动闪屏界面 -->
- <activity
- android:name="com.example.blogfordx.EgameSplash"
- android:configChanges="orientation"
- android:screenOrientation="portrait"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <!-- 单机游戏不能有Internet等无关权限,若有特殊要求,平台申请时注明,审核通过后方可添加 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.SEND_SMS" />
MainActivity.java
- package com.example.blogfordx;
- import android.net.Uri;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.View;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- findViewById(R.id.button1).setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Fiap fiap = new Fiap(MainActivity.this);
- fiap.android_Pay(1);
- }
- });
- findViewById(R.id.button2).setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 更多游戏接口
- Uri uri = Uri
- .parse("http://wapgame.189.cn/c/index.html");
- Intent in = new Intent(Intent.ACTION_VIEW, uri);
- MainActivity.this.startActivity(in);
- }
- });
- }
- }
EgameSplash.java:
- package com.example.blogfordx;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- public class EgameSplash extends Activity {
- private int count = 0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.splash);
- new Thread(new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while (count <= 2) {
- count++;
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- Intent intent = new Intent(EgameSplash.this, MainActivity.class);
- startActivity(intent);
- EgameSplash.this.finish();
- }
- }).start();
- }
- }
Fiap.java
- package com.example.blogfordx;
- import cn.game189.sms.SMS;
- import cn.game189.sms.SMSListener;
- import android.app.Activity;
- import android.os.Handler;
- import android.util.Log;
- import android.widget.Toast;
- public class Fiap {
- private Activity mActivity;
- // 是否允许重复计费
- private boolean isRepeat;
- // 计费点短代码
- private String charge_Point;
- // 道具名称
- private String itemID = "";
- // 支付金额
- private int coin = 0;
- public Fiap(Activity activity) {
- mActivity = activity;
- }
- // index是三种计费点对应的标识
- // 此处只有购买200兑换币是可支付的,正式使用时请填写自己的申请的计费点短代码
- public void android_Pay(int index) {
- switch (index) {
- case 0:
- // 激活游戏
- isRepeat = false;
- // 此处计费点填写电信平台申请的计费点的后三位作为计费点索引
- charge_Point = "000";
- itemID = "激活游戏";
- coin = 4;
- break;
- case 1:
- isRepeat = true;
- charge_Point = "0211C001271102517996991102517990080115127000000000000000000000000000";
- itemID = "购买200兑换币";
- coin = 2;
- break;
- case 2:
- isRepeat = true;
- charge_Point = "002";
- itemID = "购买400兑换币";
- coin = 3;
- break;
- default:
- break;
- }
- fiapHandler.sendEmptyMessage(1);
- }
- Handler fiapHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- if (msg.what == 1) {
- if (SMS.checkFee(itemID, mActivity, new SMSListener() {
- public void smsOK(String feeName) {
- // 短代发送成功,此处填写支付成功后的逻辑
- Log.i("SMSListener", "模式" + feeName + "已计费完成,关卡已打开.");
- Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG)
- .show();
- }
- public void smsFail(String feeName, int errorCode) {
- // 短代发送失败,不给道具或不放行关卡
- Log.e("SMSListener", "计费失败!模式:[" + feeName + "] 错误码:"
- + errorCode);
- }
- public void smsCancel(String feeName, int errorCode) {
- Log.e("SMSListener", "用户点击取消!计费点:" + feeName + " 错误码:"
- + errorCode);
- }
- }, charge_Point, itemID + ",点击确定将会发送一条" + coin + "元短信,不含信息费.",
- "短信已成功发送", isRepeat)) {
- // 已计过费
- }
- }
- };
- };
- }
电信的计费sdk接入完成
转自http://blog.csdn.net/simdanfeg/article/details/9011977