위챗 공유 친구 + 모멘트 개발 문서
자원 신청
위챗 오픈 플랫폼 계정을 신청하고 자신의 AppID 주소를 신청하여 개발 자원을 준비합니다.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
// APP_ID appID
private static final String APP_ID = "wx88888888";
// IWXAPI app openApi
private IWXAPI api;
private regToWx() {
// WXAPIFactory , IWXAPI
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// appId
api.registerApp(APP_ID);
}
boolean sendReq(BaseReq req);
sendReq는 제3자 앱이 자발적으로 위챗에 메시지를 보내고 발송이 완료되면 제3자 앱 인터페이스로 전환한다.
boolean sendResp(BaseResp resp);
sendResp는 위챗이 제3자 앱에 데이터를 요청하고 제3자 앱이 데이터에 응답한 후에 위챗 인터페이스로 전환한다.
sendReq의 구현 예는 다음 그림과 같습니다.
/ WXTextObject ,
WXTextObject textObj = new WXTextObject();
textObj.text = text;
// WXTextObject WXMediaMessage
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
msg.description = text;
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis()); //transaction
req.message = msg;
req.scene = mTargetScene;
// api ,
api.sendReq(req);
scene 필드 int 형식 상수, 메시지를 보내는 목적의 문서에서 지정한 상수를 대화에 공유합니다: SendMessageToWX.Req.WXSceneSession 모멘트에 공유:SendMessageToWX.Req.WXSceneTimeline ; 모음집에 공유: SendMessageToWX.Req.WXSceneFavorite
checkArgs fail, thumbData is invalid 오류 원인, WXWebpageObject웹 페이지 축소판 그림, 32K 이하의 크기를 요구하는 기존 방법인 Bitmap thumbBmp = BitmapFactory.decodeResource(getResources(), R.drawable.send_music_thumb) 항상 기준치를 초과하면 미리 보기 그림 크기를 스스로 조절합니다
Bitmap thumbBmp = Bitmap.createScaledBitmap(getBitmap(context,R.drawable.page_title),120,120,true);
// svg, 5.0
private Bitmap getBitmap(Context context,int vectorDrawableId) {
Bitmap bitmap = null;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
Drawable vectorDrawable = context.getDrawable(vectorDrawableId);
bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);
} else {
bitmap = BitmapFactory.decodeResource(context.getResources(), vectorDrawableId,new BitmapFactory.Options());
}
return bitmap;
}
<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>
2. IWXAPIEventHandler 인터페이스를 실현하고 위챗으로 보낸 요청은 onReq 방법으로 리셋하고 위챗으로 보낸 요청의 응답 결과는 onResp 방법으로 리셋 방법은 처리가 끝난 후finish()의 현재 활동을 기억한다.WXEntryActivity에서 수신된 intent와 IWXAPIEventHandler 인터페이스를 실현한 대상을 IWXAPI 인터페이스에 전달하는handleIntent 방법은 onCreate () 와onNew Intent () 에서 실현되어야 한다
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID,false);
// api.registerApp(WEIXIN_APP_ID);
api.handleIntent(getIntent(),this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent,this);
}
위챗 4.2 이상 필요
if (api.getWXAppSupportAPI() >= Build.TIMELINE_SUPPORTED_SDK_INT) {
//do share
}
또한 위챗 자료의 출처를 설치할지 여부를 판단해야 한다
/
public boolean isWeChatAppInstalled(Context context) {
if(api.isWXAppInstalled()) {
return true;
} else {
final PackageManager packageManager = context.getPackageManager();// packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);//
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equalsIgnoreCase("com.tencent.mm")) {
return true;
}
}
}
return false;
}
}
//
private void checkPhoneState() {
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 0);
}
}
비고
6.72 위챗 업데이트 후 리셋을 공유하면 cancel과 success 이벤트가 결과 리셋 방법인 onResp(Base Resp base Resp)로 되돌아오는 base Resp가 됩니다.errCode, BaseResp.가 표시되지 않습니다.ErrCode.ERR_USER_CANCEL, BaseResp. 만 반환ErrCode.ERR_OK(0) 위챗 업데이트 링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.