編輯:關於Android編程
前言
眾所周知在Android應用開發過程中,可能會有需求,比如:推廣時跳轉到應用市場下載應用,跳轉到應用市場給自己的應用打分,跳轉到應用市場更新自己的應用。
那如何跳轉到應用市場呢?
可能跳轉的方法大家都是知道的,方法如下:
public static void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { e.printStackTrace(); } }
此方法支持應用寶、360手機助手、豌豆莢、小米商店等主流的應用市場,當手機上面裝有多個應用市場時,則會彈出菜單讓用戶選擇調轉到哪個市場。那麼,問題來了,如果這麼簡單就結束了,怎麼還會有這篇文章呢?
在紅米Note2上測試時發現,調用此方法默認是直接調轉到小米市場,那如果在小米手機上,想要跳轉到應用寶或者其他的應用市場怎麼辦呢,方法自然是有的,如下:
public static void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { goToMarket.setClassName("com.tencent.android.qqdownloader", "com.tencent.pangu.link.LinkProxyActivity"); context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { e.printStackTrace(); } }
看起來好像和第一個方法沒什麼區別,是的,只需要給多調用goToMarket.setClassName()
方法,設置指定的應用去處理這個Intent事件,這樣就可以在小米手機上跳轉到應用寶的應用詳情頁面,而且,上一個方法如果在手機上裝有多個應用市場時,會彈出菜單讓用戶選擇,如果已經確定好要跳轉到哪個應用市場時,也可使用此方法,直接跳轉,省去中間用戶選擇的環節。
但是上面方法的思路似乎並不能對所有的應用市場有效,哪天產品經理提出要跳轉到三星的應用市場,畢竟三星手機在國內的占有率還是排前幾位的,再使用上面的方法,發現懵逼了,三星市場竟然不支持這種方式,難怪三星手機在國內市場節節敗退。
不過再筆者的努力下終於找到了如下方法:
public static void goToSamsungappsMarket(Context context, String packageName) { Uri uri = Uri.parse("http://www.samsungapps.com/appquery/appDetail.as?appId=" + packageName); Intent goToMarket = new Intent(); goToMarket.setClassName("com.sec.android.app.samsungapps", "com.sec.android.app.samsungapps.Main"); goToMarket.setData(uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { e.printStackTrace(); } }
不過,後來發現在樂視手機上面,樂視的應用市場也是不支持goToMarket()
方法的,所以又專門調研了跳轉樂視應用市場的方法,方法如下:
void goToLeTVStoreDetail(Context context, String packageName) { Intent intent = new Intent(); intent.setClassName("com.letv.app.appstore", "com.letv.app.appstore.appmodule.details.DetailsActivity"); intent.setAction("com.letv.app.appstore.appdetailactivity"); intent.putExtra("packageName", packageName); context.startActivity(intent); }
總結
好了,以上就是這篇文章的全部內容了以上的方法希望能幫助到有需要的人。如果有疑問大家可以留言交流。
引子https://github.com/Afra55/DataBindingApplication我自己認為,先看Demo,然後帶著疑問 去閱讀,會有一種解惑的情懷。&
在自定義控件這個學習系列裡,首先寫篇文章記錄一下View的繪制流程,壓壓驚:-P。也為以後的自定義控件實踐打個基礎。雖然講解View工作流程的文章很多,其中不乏很多精品文
我們使用百度地圖的時候,點擊地圖上的Marker,會彈出一個該地點詳細信息的窗口,如下左圖所示,有時候,我們希望自己定義這個彈出窗口的內容,或者,干脆用自己的數據來構造這
今天面試被問及了一個問題:Activity A、Activity B,Activity A 被B覆蓋的時候,Activity生命周期中哪幾個方法被調用了?Activity