簡體   English   中英

如何從Android中的市場URL比較軟件包名稱?

[英]how to compare package name from market url in android?

我正在開發一個包含廣播接收器的應用程序,並且當用戶單擊任何特定的應用程序(他將定向播放該應用程序並從jsons響應下載該應用程序時,也包含該應用程序的列表)時,所有應用程序都顯示在列表網址中,例如“ https:// play .google.com / store / apps / details?id = com.example.launcher “我要做的是,當應用程序成功在系統中下載后,如果匹配,我將從json響應url檢查該應用程序的應用程序包名稱顯示吐司其他錯誤消息。 請問我如何才能達到這個目的呢?

這是我的廣播接收器代碼:

    public class Receiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED"))
        Log.e("Package Added:-", intent.getData().toString());
    }
}

使用以下命令從URL中提取包名稱

    String downPack = yourUrl.split("id\\=")[1];

從文件中提取包名稱

public String getPackageNameByAPK(String apkPath, Context context) {
    String packName = "";
    PackageManager packageManager;
    PackageInfo packInfo;

    try {

        if (apkPath == null) return "";

        if (context == null) {
            return "";
        }

        packageManager = context.getPackageManager();
        packInfo = packageManager.getPackageArchiveInfo(apkPath, 0);
        packName = packInfo.packageName;

    } catch (Exception e) {
        e.printStackTrace();
    }

    return packName;
}

比較像

boolean matched = downPack.equals(getPackageNameByAPK(apkPath,context));

這可能對您有幫助。

@Override
public void onReceive(Context context, Intent intent) {

    String installAppPackgeName = intent.getData().getSchemeSpecificPart();     
    String url = "https://play.google.com/store/apps/details?id=com.example.launcher";  
    String packageName = getQueryMap(url).get("id");
    if(installAppPackgeName.equals(packageName)){
        // If install app package name is same as url package name then do some task.
        // Your app is installed now.   

    }

}

/** 
 * Get Query String as Key-Value Pair.
 */
public static Map<String, String> getQueryMap(String query) {
    Map<String, String> map = new HashMap<>();
    String[] queryString = query.split("\\?");
    if(queryString.length>1){
        String[] params = queryString[1].split("&");
        for (String param : params) {
            String name = param.split("=")[0];
            String value = param.split("=")[1];
            map.put(name, value);
        }            
    }
    return map;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM