android跳轉其他app

需求

公司有兩款app需要聯動,從一款app打開另一款,所以需要進行app跳轉


實現

基本邏輯就是在一款app中點擊打開另一款app時,在本機對於app進行查找和判斷,查看本地是否存在,如果不存在跳轉app下載頁
如果存在就跳轉到另一個app的首個activity

代碼

public class PackageUtil {

    /**
     * 跳轉其他app  跳轉首個activity不需要 export
     * @param context 上下文
     * @param packageName 全包名
     * @param className 首個activity名稱
     */
    public static void jumpToApp(Context context,String packageName, String className) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        context.startActivity(intent);
    }

    /**
     * 判斷app是否安裝
     * @param context 上下文
     * @param packageName 全包名
     * @return
     */
    public static boolean isAppInstalled(Context context, String packageName) {
        final PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        List<String> pName = new ArrayList<String>();
        if (pinfo != null) {
            for (int i = 0; i < pinfo.size(); i++) {
                String pn = pinfo.get(i).packageName;
                pName.add(pn);
            }
        }
        return pName.contains(packageName);
    }

    /**
     * 打開外部瀏覽器下載
     * @param context
     * @param downloadWebUrl
     */
    public static void jumpToWeb(Context context ,String downloadWebUrl) {
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        Uri content_url = Uri.parse(downloadWebUrl);
        intent.setData(content_url);
        context.startActivity(intent);
    }
}
主程序邏輯代碼

  if (PackageUtil.isAppInstalled(mActivity, CHONGHAO_PACKAGE_NAME)) { //app存在
                            //跳轉app
                            try {
                                PackageUtil.jumpToApp(mActivity, "com.example.app", "com.example.app.activity.MainActivity");
                                //   PackageUtil.jumpToApp(mActivity, CHONGHAO_PACKAGE_NAME, CHONGHAO_PACKAGE_NAME);
                            } catch (Exception e) {
                                showToast("跳轉失敗,請安裝最新版");
                                PackageUtil.jumpToWeb(mActivity, "http://www.baidu.com");
                            }


                        } else {//沒有安裝app 去下載
                            PackageUtil.jumpToWeb(mActivity, "http://www.baidu.com");
                        }

注意

如果跳轉的不是app的首個activity 需要將跳轉的app暴露出來
在註冊文件中添加 export屬性

  
        <activity
            android:name=".activity.SecondActivity"
            android:exported="true"/>

        <activity



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