Android APP整合微信分享

微信開放平臺-官方文檔-Android接入指南

微信開放平臺-官方文檔-Android資源下載

運行官方demo

想要運行官方的demo可能需要以下幾步

  1. 上面下載的項目可能報錯,首先修改gradle-wrapper.properties中的distributionUrl爲你目前項目用的路徑,build.gradle中的com.android.tools.build:gradle改爲現在項目用的版本
    還有一些報錯,按照提示修復即可
  2. 添加release版本的簽名配置
  3. build.gradle中的applicationId改爲現在項目的applicationId
  4. 然後以release運行即可
  5. 如果需要有回調結果,還需要把文件夾的名字改成和上邊的applicationId相同的文件夾名。具體操作是:選擇圖中圖標,把Compact MIddle Packages前邊√去掉

例如我的applicationId是com.aa.bb

那麼,從末級開始修改馬賽克遮住的文件夾名稱:右鍵-refactor-rename
在這裏插入圖片描述
在這裏插入圖片描述

自己項目

build.gradle添加依賴

api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

添加權限

<uses-permission android:name="android.permission.INTERNET" />

<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

註冊到微信

可以參照上面下載的Android資源寫

private static final String APP_ID = "wx......";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;
 // 通過WXAPIFactory工廠,獲取IWXAPI的實例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 將應用的appId註冊到微信
api.registerApp(APP_ID);

分享文字

複製demo中代碼即可

public class MainActivity extends AppCompatActivity {
    private static final String APP_ID = "wx......";
    // IWXAPI 是第三方app和微信通信的openApi接口
    private IWXAPI api;

    private Button btn1;
    private String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 通過WXAPIFactory工廠,獲取IWXAPI的實例
        api = WXAPIFactory.createWXAPI(this, APP_ID, true);
        // 將應用的appId註冊到微信
        api.registerApp(APP_ID);

        text = "你好";
        btn1 = findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                WXTextObject textObj = new WXTextObject();
                textObj.text = text;

                WXMediaMessage msg = new WXMediaMessage();
                msg.mediaObject = textObj;
                // msg.title = "Will be ignored";
                msg.description = text;
                msg.mediaTagName = "我是mediaTagName啊";

                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = buildTransaction("text");
                req.message = msg;
                req.scene = SendMessageToWX.Req.WXSceneSession;

                api.sendReq(req);
            }
        });
    }

    private String buildTransaction(final String type) {
        return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
    }
}

如果 添加release版本的簽名配置都配置好了,那麼選擇release即可運行了

在這裏插入圖片描述

分享到朋友圈

只需修改剛纔代碼

//req.scene = SendMessageToWX.Req.WXSceneSession;
req.scene = SendMessageToWX.Req.WXSceneTimeline;

其他分享內容例如分享圖片等,參照demo中代碼即可

分享之後回調

如果你的程序需要接收微信發送的請求,或者接收發送到微信請求的響應結果,需要下面 3 步操作:
a. 在你的包名相應目錄下新建一個 wxapi 目錄,並在該 wxapi 目錄下新增一個 WXEntryActivity 類,該類繼承自 Activity(例如應用程序的包名爲 net.sourceforge.simcpux,則新添加的類如下圖所示)
在這裏插入圖片描述
manifest中註冊

<activity
    android:name=".wxapi.WXEntryActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true"
    android:taskAffinity="net.sourceforge.simcpux"
    android:launchMode="singleTask">
</activity>

b. 實現 IWXAPIEventHandler 接口,微信發送的請求將回調到 onReq 方法,發送到微信請求的響應結果將回調到 onResp 方法
c.接收intent

當微信發送請求到你的應用,將通過 IWXAPIEventHandler 接口的 onReq 方法進行回調,類似的,應用請求微信的響應結果將通過 onResp 回調

一個基本的WXEntryActivity代碼如下:

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final String APP_ID = "wx......";
	private IWXAPI api;

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

        api = WXAPIFactory.createWXAPI(this, APP_ID, false);

        try {
            Intent intent = getIntent();
            api.handleIntent(intent, this);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {

    }

    @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;
            case BaseResp.ErrCode.ERR_UNSUPPORT:
                result = R.string.errcode_unsupported;
                break;
            default:
                result = R.string.errcode_unknown;
                break;
        }

        Toast.makeText(this, getString(result) + ", type=" + resp.getType(), Toast.LENGTH_SHORT).show();
        finish();
    }
}

在這裏插入圖片描述
這是最基本的,其他附加功能,參考demo中的代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章