使用微信api将内容分享给好友,或者发送到朋友圈

您所在的位置:网站首页 如何使用api接口发送文件到微信 使用微信api将内容分享给好友,或者发送到朋友圈

使用微信api将内容分享给好友,或者发送到朋友圈

2024-07-15 11:09| 来源: 网络整理| 查看: 265

http://blog.csdn.net/u012591761/article/details/42263009

现在我们给应用添加一个功能,能在应用内将消息分享给微信好友,或者分享到朋友圈中。 我们首先来到微信开放平台官网,跟着组织走,官网指南: https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN 点击这里,查看步骤

1.申请你的AppID 开发者账号注册完了之后,来到管理中心,创建我们第一个应用。 按照要求将应用信息补完就行,期间有一点要注意: 这次我们需要的应用签名不再是SHA1 fingerprint,而是MD5 fingerprint!! 而且我们要把签名中该死的冒号给去掉才行! 最后我们得到这样的签名: 填入正确后等待审核。 ps:其实签名和包名填错都没关系,应用审核通过后可以随时更改。 但是 应用名称没办法修改了。

这些都完成,审核通过后我们会得到AppID。

于是我们也是有身份了人了。

那么这个应用名称会在那里显示呢?

请叫我土豪。

2.搭建开发环境 下载libammsdk.jar包添加到buildpath什么的就不再赘述了。 注意AndroidManifest.xml 添加必要的权限支持: [java] view plain copy print ?                 3.在代码中使用 接下来我会直接使用自己的例子作为说明。 首先我做了一个这样的DEMO:使用高德地图sdk取得自己的定位,返回经纬度和详细地址描述: 我添加一个按钮,点击能讲现在的位置分享到微信。 现在这个按钮是空的,我们一步步来做。 [1] 注册到微信 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。 可以在程序入口Activity的onCreate回调函数处,或其他合适的地方将你的应用id注册到微信。 [java] view plain copy print ? public static final String APP_ID= "wxeb************";  // IWXAPI 是第三方app和微信通信的openapi接口  private IWXAPI api;  api = WXAPIFactory.createWXAPI(this, APP_ID, true);  api.registerApp(APP_ID);    public static final String APP_ID= "wxeb************"; // IWXAPI 是第三方app和微信通信的openapi接口 private IWXAPI api; api = WXAPIFactory.createWXAPI(this, APP_ID, true); api.registerApp(APP_ID); 这一段代码塞到onCreate()里面就行了。 [2] 发送请求到微信 然后我们点击分享按钮,然后跳转到分享页面。同时将我们要分享的文本带过去。 [java] view plain copy print ? Intent intent=new Intent(this, ShareActivity.class);  Bundle bundle=new Bundle();  bundle.putString("text", mLocationDesTextView.getText().toString());  intent.putExtras(bundle);  startActivity(intent);   Intent intent=new Intent(this, ShareActivity.class); Bundle bundle=new Bundle(); bundle.putString("text", mLocationDesTextView.getText().toString()); intent.putExtras(bundle); startActivity(intent);

点击文字按钮,弹出对话框,可以在里面修改要分享的文字。

[java] view plain copy print ? findViewById(R.id.send_text).setOnClickListener(new View.OnClickListener() {  @Override  public void onClick(View v) {      final EditText editor = new EditText(ShareActivity.this);      editor.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));      editor.setText(bundle.getString("text"));      new AlertDialog.Builder(ShareActivity.this).setTitle("send text").setView(editor).setPositiveButton("send", new DialogInterface.OnClickListener() {          @Override          public void onClick(DialogInterface dialog, int which) {              String text = editor.getText().toString();              if (text == null || text.length() == 0) {                  return;              }              // 初始化一个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;              // 构造一个Req              SendMessageToWX.Req req = new SendMessageToWX.Req();              req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求              req.message = msg;              req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;              // 调用api接口发送数据到微信              api.sendReq(req);              finish();              }          }).setNegativeButton("cancel", null).create().show();      }  });    private String buildTransaction(final String type) {      return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();  }   findViewById(R.id.send_text).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final EditText editor = new EditText(ShareActivity.this); editor.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); editor.setText(bundle.getString("text")); new AlertDialog.Builder(ShareActivity.this).setTitle("send text").setView(editor).setPositiveButton("send", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String text = editor.getText().toString(); if (text == null || text.length() == 0) { return; } // 初始化一个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; // 构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("text"); // transaction字段用于唯一标识一个请求 req.message = msg; req.scene = isTimelineCb.isChecked() ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession; // 调用api接口发送数据到微信 api.sendReq(req); finish(); } }).setNegativeButton("cancel", null).create().show(); } }); private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } 点击send之后,执行api.sendReq(req),就将内容发送出去啦。 需要注意的是,SendMessageToWX.Req的scene成员,如果scene填WXSceneSession,那么消息会发送至微信的会话内。 如果scene填WXSceneTimeline(微信4.2以上支持,如果需要检查微信版本支持API的情况,可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈),那么消息会发送至朋友圈。 scene默认值为WXSceneSession。 [3] 接收微信的请求及返回值 如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面3步操作: a. 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity。 如图: 并在manifest文件里面加上exported属性,设置为true,例如: [java] view plain copy print ?      b. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法 c. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法,示例如下: [java] view plain copy print ? public class WXEntryActivity extends Activity implements IWXAPIEventHandler{      IWXAPI api = WXAPIFactory.createWXAPI(this, "wxeb2************");      @Override      protected void onCreate(Bundle savedInstanceState) {          // TODO Auto-generated method stub          super.onCreate(savedInstanceState);  //      setContentView(R.layout.send_to_wx);          api.handleIntent(getIntent(), this);      }      @Override      public void onReq(BaseReq arg0) {          // TODO Auto-generated method stub                }      @Override      protected void onNewIntent(Intent intent) {          super.onNewIntent(intent);          setIntent(intent);          api.handleIntent(intent, this);      }      @Override      public void onResp(BaseResp resp) {          // TODO Auto-generated method stub              int result = 0;              switch (resp.errCode) {              case BaseResp.ErrCode.ERR_OK:                  result = 0;                  break;              case BaseResp.ErrCode.ERR_USER_CANCEL:                  result = -2;                  break;              case BaseResp.ErrCode.ERR_AUTH_DENIED:                  result = -4;                  break;              default:                  result = 123;                  break;          }              Toast.makeText(this, Integer.toString(result), Toast.LENGTH_LONG).show();              finish();      }      }   public class WXEntryActivity extends Activity implements IWXAPIEventHandler{ IWXAPI api = WXAPIFactory.createWXAPI(this, "wxeb2************"); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // setContentView(R.layout.send_to_wx); api.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq arg0) { // TODO Auto-generated method stub } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onResp(BaseResp resp) { // TODO Auto-generated method stub int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = 0; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = -2; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = -4; break; default: result = 123; break; } Toast.makeText(this, Integer.toString(result), Toast.LENGTH_LONG).show(); finish(); } } 当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3