如何生成产品链接?

时间:2019-03-15 09:48:06

标签: android android-intent share share-intent

我想使用应用程序或Facebook等向某些用户共享产品网址,产品名称。当用户单击该产品时,如果安装了应用程序,则应打开应用程序中相同的产品页面。如果未安装应用,则应导航至商店。现在如何生成该可共享链接,以便在用户单击时打开应用中的同一页面

这是我的代码

// share on social websites
    public void shareItem(String url) {
        Log.e("image",productimage);
        Picasso.with(getApplicationContext()).load(url).into(new Target() {
            @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                Intent i = new Intent(Intent.ACTION_SEND);
                i.setType("*/*");
                i.putExtra(Intent.EXTRA_STREAM, getLocalBitmapUri(bitmap));
                i.putExtra(Intent.EXTRA_TEXT, name.getText().toString()+ "\n" +productimage);
                startActivity(Intent.createChooser(i, "Share Image"));
            }
            @Override public void onBitmapFailed(Drawable errorDrawable) { }
            @Override public void onPrepareLoad(Drawable placeHolderDrawable) { }
        });
    }
    public Uri getLocalBitmapUri(Bitmap bmp) {
        Uri bmpUri = null;
        try {
            File file =  new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
            FileOutputStream out = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
            out.close();
            //bmpUri = Uri.fromFile(file);
            bmpUri=FileProvider.getUriForFile(getApplication(),BuildConfig.APPLICATION_ID+".provider",file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bmpUri;
    }

1 个答案:

答案 0 :(得分:1)

您应该在清单文件中添加一个意图过滤器。一个意图过滤器应包含以下元素和属性值;

定义ACTION_VIEW意向操作,以便可以从Google搜索访问意向过滤器。

<action android:name="android.intent.action.VIEW" />

我们应该包括BROWSABLE类别,以便可以从Web浏览器进行访问。我们还应该使用DEFAULT类别来响应隐式意图

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

最后,我们应该定义一个或多个标签。这些标签中的每一个都代表一种解析为活动的URI格式。以下示例表示test.com Android应用程序的简单数据标签。

 <data
        android:host="test.com"
        android:scheme="https" />

如何从传入意图中读取数据

当您定义可以处理特定URL的意图过滤器时,系统可以通过该意图过滤器开始您的活动。

Intent intent = getIntent();
Uri data = intent.getData();

如果您将查询参数传递为test.com?productID=123,则可以从中获取

data.getQueryParameter("productID");