Android应用中对于微信分享的实例及问题

来源:互联网 发布:c语言培训费用 编辑:程序博客网 时间:2024/06/06 00:13



源码地址

如何分享

分享无相应

分享结果如何接收响应

微信 分享回调

(提示几点关键问题:   debug_key 一定要获得对应的签名码 然后和weixin官网的appid对应     )

几点注意事项 
1)必须新建一个包位置是
    <you package>.wxapi
2)并在此包下简历class
    WXEntryActivity.class
3)AndroidManifest.xml  需要添加对应Activity的声明
     <activity
                   android:name="com.yinhang.pos.wxapi.WXEntryActivity"
                   android:exported="true"
                   android:theme="@android:style/Theme.Translucent" >
4) WXEntryActivity.class 的基本要求
    public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler{


RelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".StartActivity" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />        <Button         android:id="@+id/btn_share"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        style="@style/MMLineActionButton"        android:layout_centerHorizontal="true"        android:text="share"        /></RelativeLayout>



manifest

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.weishare"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="17" />            <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.weishare.activity.StartActivity"            android:exported="true"            android:launchMode="singleTop"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity             android:name="com.example.weishare.wxapi.WXEntryActivity"             android:exported="true"             android:theme="@android:style/Theme.Translucent" >         </activity>      </application></manifest>



WXEntryActivity   响应 发送返回的关键

public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api;  @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          api = WXAPIFactory.createWXAPI(this,                  "your app id", false);          api.handleIntent(getIntent(), this);        }  @Override      public void onReq(BaseReq arg0) {        }        @Override      public void onResp(BaseResp resp) {          int result = 0;            switch (resp.errCode) {          case BaseResp.ErrCode.ERR_OK:              result = R.string.errcode_success;              break;          case BaseResp.ErrCode.ERR_USER_CANCEL:              result = R.string.errcode_cancel;              break;          case BaseResp.ErrCode.ERR_AUTH_DENIED:              result = R.string.errcode_deny;              break;          default:              result = R.string.errcode_unknown;              break;          }            Toast.makeText(this, result, Toast.LENGTH_LONG).show();            // TODO 微信分享 成功之后调用接口          this.finish();      }  }




StartActivity

public class StartActivity extends Activity {private static final String APP_ID = "your app id";private IWXAPI api;private static final String text = "sdafljsalfdkj";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_start);findViewById(R.id.btn_share).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal EditText editor = new EditText(StartActivity.this);editor.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));editor.setText("默认发送信息");//MMAlert.showAlert(StartActivity.class, "title", editor, "ok", "cancel", new DialogInterface.OnClickListener())regToWx();// 初始化一个WXTextObject对象WXTextObject textObj = new WXTextObject();textObj.text = text;// 用WXTextObject对象初始化一个WXMediaMessage对象WXMediaMessage msg = new WXMediaMessage();msg.mediaObject = textObj;// 发送文本类型的消息时,title字段不起作用// msg.title = "Will be ignored";msg.description = text;// 构造一个ReqSendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = String.valueOf(System.currentTimeMillis());//buildTransaction("text"); // transaction字段用于唯一标识一个请求req.message = msg;//req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;Log.e("",api.sendReq(req) + "----------------");// 调用api接口发送数据到微信api.sendReq(req);}});}private void regToWx(){api = WXAPIFactory.createWXAPI(this, APP_ID, true);api.registerApp(APP_ID);}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();//Toast.makeText(this, "onRestart   sdkjflsaj", Toast.LENGTH_LONG).show();Log.e(this.getApplication().toString(), "---------onRestart-----------------------");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();//Toast.makeText(this, "onResume  lasdkjflsaj", Toast.LENGTH_LONG).show();Log.e(this.getApplication().toString(), "---------onResume-----------------------");}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.start, menu);return true;}//@Override//public void onReq(BaseReq arg0) {//// TODO Auto-generated method stub////Toast.makeText(this, "onReqonReqonReqlasdkjflsaj", Toast.LENGTH_LONG).show();//Log.e(this.getApplication().toString(), "---------onReq-----------------------");//}////@Override//public void onResp(BaseResp arg0) {//// TODO Auto-generated method stub////Toast.makeText(this, "onResponResponRespasdkjflsaj", Toast.LENGTH_LONG).show();;//Log.e(this.getApplication().toString(), "---------onResp-----------------------");//////}}














0 0
原创粉丝点击