2013-12-09 16 views
4

我在手機上安裝了Google Play,Amazon,Samsung等商店。我想給用戶選擇去哪個市場。如果我使用市場,則默認情況下會轉到Google Play應用。我想要它們的列表出現。我是否必須手動檢查哪些已安裝並具有自定義選擇屏幕?或者,我可以調整我當前的代碼:如何強制安裝App Store的選擇?

startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("market://details?id=" + appName))); 
+0

那麼,你可以測試你的方法真的很快,對不對?當您使用startActivity並創建您的意圖時會發生什麼?它是否按預期工作? –

+0

僅供參考 - 在我的三星S4上,它直接進入我看到的Google Play App Store –

+0

。好問題。我相信你將不得不搜索已安裝的應用程序列表,並選擇並提供可用市場作爲自定義列表。恐怕您不能使用Uri市場協議,因爲市場與Google Play緊密相關,而不是任何其他市場。 –

回答

0

我有一個例子:

// get app which can open fill 
public List<Map<String, Object>> getAppOpeners(Intent intent) { 
    if (intent == null) { 
     return null; 
    } 
    List<Map<String, Object>> appinfos = new ArrayList<Map<String, Object>>(); 
    ResolveInfo app = null; 
    List<ResolveInfo> mApps = new ArrayList<ResolveInfo>(); 

    PackageManager pm = mContext.getPackageManager(); 
    mApps = pm.queryIntentActivities(intent, 
      PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);// get app which can open fill 
    Iterator<ResolveInfo> it = mApps.iterator(); 
    while (it.hasNext()) { 
     Map<String, Object> item = new HashMap<String, Object>(); 
     app = it.next(); 
     if (true) {// mContext.getPackageManager().getLaunchIntentForPackage(app.activityInfo.packageName) 
        // != null 
      item.put("packname", app.activityInfo.packageName);// packname of app 
      item.put("appname", app.loadLabel(mContext.getPackageManager()));// name of app 
      item.put("icon", app.loadIcon(mContext.getPackageManager()));// icon of app 
      item.put("intent", intent); 
      appinfos.add(item); 
     } 
    } 
    //appinfos = StringSortUtil.sortString(appinfos, "appname"); 
    return appinfos; 
} 

用於篩選的應用程序可以打開通過mimetype文件的代碼。它也許是有用的爲您

對不起,我的英文不好

+0

你缺少代碼?我添加了在Eclipse中建議的導入,但我仍然留下了太多遺漏的聲明和讓我困惑的東西。你可以發佈所有聲明和其他相關代碼,因爲這讓我感到困惑。 KEY_ICON是我們添加的drawable,或者是自動提取的,因爲它不被識別.......等 –

+0

很抱歉,我再次修改了我的代碼,此方法用於篩選應用程序 –

+0

我的電子郵件地址是bjltxsp @ gmail.com,如果你沒有看到,你可以給我發信息,我的英語不好,所以對不起! –