欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java代碼朋友圈 關(guān)于代碼發(fā)朋友圈句子

java怎么實(shí)現(xiàn)微信分享到朋友圈功能

申請應(yīng)用 AppKey

在順城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),順城網(wǎng)站建設(shè)費(fèi)用合理。

申請方法:訪問友推網(wǎng)站后臺,登錄后進(jìn)入應(yīng)用列表,添加需要集成友推組件的 App,如下圖,添加成功后可獲取應(yīng)用的 AppKey。

如何把a(bǔ)pp分享到微信

2

申請社交平臺appkey

集成前您需要為您的應(yīng)用在各大社交網(wǎng)站的開放平臺申請賬號并通過審核,否則只能調(diào)用系統(tǒng)的分享菜單,無法跟蹤分享的回調(diào)事件及統(tǒng)計平臺

如何把a(bǔ)pp分享到微信

3

引用youtui庫項(xiàng)目

將youtui-lib項(xiàng)目庫和應(yīng)用工程放在同一個目錄下

在 Package Explorer 中右鍵點(diǎn)擊工程的根目錄,選擇 Properties(屬性),然后點(diǎn)擊,在Android選項(xiàng)點(diǎn)擊Add添加youtui-lib

如何把a(bǔ)pp分享到微信

4

注冊需要分享的平臺

1.配置各分享平臺key,該配置文件為youtui_sdk.xml,配置完放入工程的assets文件夾。

2.如果需要分享到哪個平臺就將該平臺的Enable屬性設(shè)置為true.

3.如果需要將某個平臺排列到前面,只需要改變它在youtui_sdk.xml文件中的位置即可。

5

各平臺需要注意的事項(xiàng):

新浪微博:

新浪微博需要驗(yàn)證應(yīng)用簽名,請一定要在新浪開放平臺管理中心應(yīng)用信息 - 基本信息 - Android簽名包名信息 配置該信息

每次包名變化或者使用的.keystore變化都會導(dǎo)致應(yīng)用簽名變化,請重新到新浪微博開放平臺設(shè)置。

運(yùn)行Demo時如果重新編譯,因?yàn)槭褂玫?keystore文件變化也會導(dǎo)致應(yīng)用簽名變化,導(dǎo)致Demo新浪微博分享無法正常工作,請運(yùn)行Demo時使用Demo工程包中提供的debug.keystore替換C:\Users\Administrator.android中的debug.keystore文件

微信和朋友圈:

微信和朋友圈也需要驗(yàn)證應(yīng)用簽名,請?jiān)谖⑿砰_放平臺管理中心修改應(yīng)用 - 開發(fā)信息配置。

QQ和QQ空間:

QQ和QQ空間使用的是騰訊開放平臺api,請?jiān)隍v訊開放平臺申請賬號和注冊應(yīng)用,請不要使用QQ互聯(lián)(用于網(wǎng)站賬號登錄)的配置,雖然都是騰訊的,但是兩個平臺并不通用,除了需要在youtui_sdk.xml配置信息,還需要在manifest文件中的android:scheme中的tencent后的一串?dāng)?shù)字換成自己應(yīng)用的appid。

?xml version="1.0" encoding="utf-8"?

最后一行配置說明:選用調(diào)用系統(tǒng)分享菜單功能

在AndroidManifest.xml 注冊權(quán)限

在 AndroidManifest.xml 注冊需要的Activity

微信和朋友圈回調(diào)設(shè)置

如果需要分享微信和朋友圈,必需建一個 應(yīng)用包名+ .wxapi 的包,在該包下建 WXEntryActivity.java,將該類繼承cn.bidaround.youtui.wxapi.WXEntryActivity即可(里面不用寫代碼)

public class WXEntryActivity extends cn.bidaround.youtui.wxapi.WXEntryActivity { }

如圖:(將com.xingxinglangtuoche替換成你應(yīng)用的package名,微信回調(diào)會使用到)

如何把a(bǔ)pp分享到微信

初始化友推

開發(fā)者請?jiān)谧约旱某绦蜷_始,最好是在MainActivity的onCreate方法調(diào)用YtTemplate.init(this)初始化友推sdk,這樣友推sdk才能進(jìn)行后續(xù)調(diào)用(否則分享等操作會出現(xiàn)空指針異常),例如:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); YtTemplate.init(this);/初始化友推/ initView(); } 應(yīng)用退出時:

在您項(xiàng)目的出口Activity的 onDestroy 方法的第一行插入下面的代碼 YtTemplate.release(this); 此方法用于釋放內(nèi)存,統(tǒng)計用戶使用情況,一旦調(diào)用了release,就必須重新調(diào)用init才能使用友推的功能,否則會出現(xiàn)空指針異常;

創(chuàng)建 ShareData 實(shí)例,調(diào)用該實(shí)例的set方法設(shè)置需要分享的數(shù)據(jù): 創(chuàng)建ShareData實(shí)例,調(diào)用該實(shí)例的set方法設(shè)置自己需要分享的數(shù)據(jù),關(guān)于該實(shí)例具體內(nèi)容見下文,如果只是分享應(yīng)用則只需要設(shè)置 setIsAppShare(true) 就可以分享應(yīng)用在友推后臺填寫的信息和下載鏈接。

ShareData 包含的字段:

isAppShare text imagePath imageUrl description title target_url 判斷是否為分享應(yīng)用 待分享的文字,短信要小于70個字符,微博要小于140個字符,如果需要分享鏈接,最好將鏈接url放在最后 待分享的本地圖片地址,分享圖片的話需要在本地和網(wǎng)絡(luò)圖片中選一,如果都有則優(yōu)先分享本地圖片 待分享網(wǎng)絡(luò)圖片url,分享圖片的話需要在本地和網(wǎng)絡(luò)圖片中選一,如果都有則優(yōu)先分享本地圖片 待分享內(nèi)容的描述 待分享內(nèi)容的標(biāo)題 待分享內(nèi)容的跳轉(zhuǎn)鏈接

通過創(chuàng)建該類實(shí)例,調(diào)用實(shí)例的set方法設(shè)置這些參數(shù),例如:

ShareData shareData = new ShareData(); shareData.isAppShare = false;//設(shè)置為true則分享的信息從友推后臺填寫的應(yīng)用信息中讀取,可動態(tài)更新,后面的值不用設(shè)置。 shareData.setDescription("友推積分組件"); shareData.setTitle("友推分享"); shareData.setText("通過友推積分組件,開發(fā)者幾行代碼就可以為應(yīng)用添加分享送積分功能,并提供詳盡的后臺統(tǒng)計數(shù)據(jù),除了本身具備的分享功能外,開發(fā)者也可將積分功能單獨(dú)集成在已有分享組件的app上,");

shareData.setTarget_url("");

shareData.setImageUrl("");

shareData.setImagePath("");

各個平臺分享數(shù)據(jù)的限制和注意事項(xiàng):

因?yàn)楦鱾€平臺的分享限制,請分享時盡量分享圖片+鏈接,依靠鏈接來了解更多信息

1) 微信 朋友圈 微信分享為linkcard形式,超出的文字部分不會顯示

2) 新浪微博 很低版本的新浪微博不支持發(fā)多類型微博,進(jìn)行圖文分享時只會分享圖片,新浪微博分享消息最長為140字

3) QQ、QQ空間 QQ分享的消息最長40字,分享的標(biāo)題最長30字,多余的部分將被忽略,description將被忽略 QQ空間分享的消息最長200字,分享的標(biāo)題最長600字,多余的部分將被忽略,description將被忽略

4) 騰訊微博 只有image(imagePath或imageUrl)和text被分享,其他字段忽略,騰訊微博分享消息最長為140字

5) 人人網(wǎng) 只有image(imagePath或imageUrl)和text被分享,其他字段忽略

6) 短信 只有text被分享,其他字段忽略

7) 郵件 只有text被分享,其他字段忽略

如何把a(bǔ)pp分享到微信

調(diào)用友推分享推薦組件

為應(yīng)用添加一個分享推薦按鈕,如:

如何把a(bǔ)pp分享到微信

在分享按鈕事件中調(diào)用youtui的組件即可,示例代碼:

public void onClick(View v) { if(v.getId()==R.id.popup_bt)

{ /調(diào)用友推分享推薦組件,YouTuiViewType類的常量為分享樣式參數(shù),目前支持白色列表和黑色網(wǎng)格兩種/ /創(chuàng)建分享的模板,第一個參數(shù)為activity,第二個參數(shù)為分享窗口樣式,第三個參數(shù)為是否需要積分/

YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.BLACK_POPUP,false); //黑色網(wǎng)格樣式不需要積分活動 /YtTemplate blackTemp = new YtTemplate(this, YouTuiViewType.WHITE_LIST,ture);/ //白色列表樣式需要積分活動

ShareData shareData = new ShareData();

shareData.isAppShare = false;//設(shè)置為true則分享的信息從友推后臺填寫的應(yīng)用信息中讀取,可動態(tài)更新后面的值不用設(shè)置。

shareData.setDescription("友推積分組件");

shareData.setTitle("友推分享");

shareData.setText("通過友推積分組件,開發(fā)者幾行代碼就可以為應(yīng)用添加分享送積分功能,并提供詳盡的后臺統(tǒng)計數(shù)據(jù),除了本身具備的分享功能外,開發(fā)者也可將積分功能單獨(dú)集成在已有分享組件的app上,快來試試吧 ");

shareData.setTarget_url("");

shareData.setImageUrl("");

shareData.setImagePath("");

blackTemp.setShareData(shareData);//設(shè)置默認(rèn)的分享數(shù)據(jù);shareData 設(shè)置參看4.6

//**如果要為某個平臺設(shè)置不一樣的分享信息。則單獨(dú)設(shè)置*/ //blackTemp.addData(YtPlatform.PLATFORM_QQ, shareData); //調(diào)出分享窗口 blackTemp.show();

//如果需要自定義分享事件,可以創(chuàng)建監(jiān)聽事件,然后在回調(diào)中處理 YtShareListener listener1 = new YtShareListener() {

@Override

public void onSuccess(ErrorInfo arg0)

{

}

@Override public void onPreShare()

{

}

@Override

public void onError(ErrorInfo arg0)

{

}

@Override

public void onCancel() {

}

};//給新浪微博添加分享監(jiān)聽 blackTemp.addListener(YtPlatform.PLATFORM_SINAWEIBO, listener1);

//給QQ添加分享監(jiān)聽 //

blackTemp.addListener(YtPlatform.PLATFORM_QQ, listener2); }

如何調(diào)用微信js

你好,調(diào)用微信js最簡單的辦法,就是在java代碼調(diào)用微信的Android SDK(具體用法看微信開發(fā)品臺的示例,很簡單), 在js里使用jsb.reflection調(diào)用你的java方法。IOS也一樣。

xposed + python 怎么爬取微信朋友圈的數(shù)據(jù)

有JAVA的,你參考一下

主要思路

從UI獲取文本信息是最為簡單的方法,于是應(yīng)該優(yōu)先逆向UI代碼部分。

逆向微信apk

首先解包微信apk,用dex2jar反編譯classes.dex,然后用JD-GUI查看jar源碼。當(dāng)然,能看到的源碼都是經(jīng)過高度混淆的。但是,繼承自安卓重要組件(如Activity、Service等)的類名無法被混淆,于是還是能從中看到點(diǎn)東西。

首先定位到微信APP package。我們知道這個是 com.tencent.mm

在 com.tencent.mm

中,我們找到一個 ui

包,有點(diǎn)意思。

展開 com.tencent.mm.ui

,發(fā)現(xiàn)多個未被混淆的類,其中發(fā)現(xiàn) MMBaseActivity

直接繼承自 Activity

, MMFragmentActivity

繼承自 ActionBarActivity

, MMActivity

繼承自 MMFragmentActivity

,并且 MMActivity

是微信中大多數(shù)Activity的父類:

public class MMFragmentActivity

extends ActionBarActivity

implements SwipeBackLayout.a, b.a {

...

}

public abstract class MMActivity

extends MMFragmentActivity {

...

}

public class MMBaseActivity

extends Activity {

...

}

現(xiàn)在需要找出朋友圈的Activity,為此要用Xposed hook MMActivity

創(chuàng)建一個Xposed模塊

參考 [TUTORIAL]Xposed module devlopment

,創(chuàng)建一個Xposed項(xiàng)目。

簡單Xposed模塊的基本思想是:hook某個APP中的某個方法,從而達(dá)到讀寫數(shù)據(jù)的目的。

小編嘗試hook com.tencent.mm.ui.MMActivity.setContentView

這個方法,并打印出這個Activity下的全部TextView內(nèi)容。那么首先需要遍歷這個Activity下的所有TextView,遍歷ViewGroup的方法參考了SO的以下代碼:

private void getAllTextViews(final View v) {

if (v instanceof ViewGroup) {

ViewGroup vg = (ViewGroup) v;

for (int i = 0; i vg.getChildCount(); i++) {

View child = vg.getChildAt(i);

getAllTextViews(child);

}

} else if (v instanceof TextView ) {

dealWithTextView((TextView)v); //dealWithTextView(TextView tv)方法:打印TextView中的顯示文本

}

}

Hook MMActivity.setContentView

的關(guān)鍵代碼如下:

findAndHookMethod("com.tencent.mm.ui.MMActivity", lpparam.classLoader, "setContentView", View.class, new XC_MethodHook() {

...

});

在findAndHookMethod方法中,第一個參數(shù)為完整類名,第三個參數(shù)為需要hook的方法名,其后若干個參數(shù)分別對應(yīng)該方法的各形參類型。在這里, Activity.setContentView(View view)

方法只有一個類型為 View

的形參,因此傳入一個 View.class

現(xiàn)在,期望的結(jié)果是運(yùn)行時可以從Log中讀取到每個Activity中的所有的TextView的顯示內(nèi)容。

但是,因?yàn)閂iew中的數(shù)據(jù)并不一定在 setContentView()

時就加載完畢,因此小編的實(shí)驗(yàn)結(jié)果是,log中啥都沒有。

意外的收獲

當(dāng)切換到朋友圈頁面時,Xposed模塊報了一個異常,異常源從 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI

這個類捕捉到。從類名上看,這個很有可能是朋友圈首頁的UI類。展開這個類,發(fā)現(xiàn)更多有趣的東西:

這個類下有個子類 a

(被混淆過的類名),該子類下有個名為 gyO

的 ListView

類的實(shí)例。我們知道, ListView

是顯示列表類的UI組件,有可能就是用來展示朋友圈的列表。

順藤摸瓜

那么,我們先要獲得一個 SnsTimeLineUI.a.gyO

的實(shí)例。但是在這之前,要先獲得一個 com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a

的實(shí)例。繼續(xù)搜索,發(fā)現(xiàn) com.tencent.mm.plugin.sns.ui.SnsTimeLineUI

有一個名為 gLZ

的 SnsTimeLineUI.a

實(shí)例,那么我們先取得這個實(shí)例。

經(jīng)過測試, com.tencent.mm.plugin.sns.ui.SnsTimeLineUI.a(boolean, boolean, String, boolean)

這個方法在每次初始化微信界面的時候都會被調(diào)用。因此我們將hook這個方法,并從中取得 gLZ

findAndHookMethod("com.tencent.mm.plugin.sns.ui.SnsTimeLineUI", lpparam.classLoader, "a", boolean.class, boolean.class, String.class, boolean.class, new XC_MethodHook() {

@Override

protected void afterHookedMethod(MethodHookParam param) throws Throwable {

XposedBridge.log("Hooked. ");

Object currentObject = param.thisObject;

for (Field field : currentObject.getClass().getDeclaredFields()) { //遍歷類成員

field.setAccessible(true);

Object value = field.get(currentObject);

if (field.getName().equals("gLZ")) {

XposedBridge.log("Child A found.");

childA = value;

//這里獲得了gLZ

...

}

}

}

});

現(xiàn)在取得了 SnsTimeLineUI.a

的一個實(shí)例 gLZ

,需要取得這個類下的 ListView

類型的 gyO

屬性。

private void dealWithA() throws Throwable{

if (childA == null) {

return;

}

for (Field field : childA.getClass().getDeclaredFields()) { //遍歷屬性

field.setAccessible(true);

Object value = field.get(childA);

if (field.getName().equals("gyO")) { //取得了gyO

ViewGroup vg = (ListView)value;

for (int i = 0; i vg.getChildCount(); i++) { //遍歷這個ListView的每一個子View

...

View child = vg.getChildAt(i);

getAllTextViews(child); //這里調(diào)用上文的getAllTextViews()方法,每一個子View里的所有TextView的文本

...

}

}

}

}

現(xiàn)在已經(jīng)可以將朋友圈頁面中的全部文字信息打印出來了。我們需要根據(jù)TextView的子類名判斷這些文字是朋友圈內(nèi)容、好友昵稱、點(diǎn)贊或評論等。

private void dealWithTextView(TextView v) {

String className = v.getClass().getName();

String text = ((TextView)v).getText().toString().trim().replaceAll("\n", " ");

if (!v.isShown())

return;

if (text.equals(""))

return;

if (className.equals("com.tencent.mm.plugin.sns.ui.AsyncTextView")) {

//好友昵稱

...

}

else if (className.equals("com.tencent.mm.plugin.sns.ui.SnsTextView")) {

//朋友圈文字內(nèi)容

...

}

else if (className.equals("com.tencent.mm.plugin.sns.ui.MaskTextView")) {

if (!text.contains(":")) {

//點(diǎn)贊

...

} else {

//評論

...

}

}

}

自此,我們已經(jīng)從微信APP里取得了朋友圈數(shù)據(jù)。當(dāng)然,這部分抓取代碼需要定時執(zhí)行。因?yàn)閺? ListView

中抓到的數(shù)據(jù)只有當(dāng)前顯示在屏幕上的可見部分,為此需要每隔很短一段時間再次執(zhí)行,讓用戶在下滑加載的過程中抓取更多數(shù)據(jù)。

剩下的就是數(shù)據(jù)分類處理和格式化輸出到文件,受本文篇幅所限不再贅述,詳細(xì)實(shí)現(xiàn)可參考作者GitHub上的源碼。

我是做Java后臺的,現(xiàn)在寫手機(jī)接口,app中涉及到了分享到第三方的功能,比如微信朋友圈、微博、qq空間這

這個調(diào)用第三方接口,如果是在微信中,那就需要調(diào)用微信的jssdk

網(wǎng)站名稱:java代碼朋友圈 關(guān)于代碼發(fā)朋友圈句子
網(wǎng)站URL:http://chinadenli.net/article48/hipcep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化定制網(wǎng)站自適應(yīng)網(wǎng)站定制開發(fā)動態(tài)網(wǎng)站全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計