5

在此处输入图像描述

以下是我通过 Share Action Provider 分享内容的方式:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,
                    "Check the Link  : " + url);
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, "Share with"));

我想用窗口设置共享的样式。我想将文本颜色和荧光笔线条颜色从默认的蓝色更改为我的自定义颜色。我正在使用 Holo 灯光主题。我不知道如何设置这些元素的样式。谁能指出这样做的参考?

有没有办法通过样式访问 android.widget.ShareActionProvider 的属性?

4

3 回答 3

3

我不知道如何设置对话框的样式,我在不同的设备中看到了不同的布局。但是您可以使用PackageManager.queryIntentActivities(Intent intent, int flag)来获取可以处理此意图的所有活动。并使用列表数据创建您自己的选择器。

编辑:演示

    final Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.google.com"));
    PackageManager pm = getPackageManager();
    final List<ResolveInfo> infos = pm.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    CharSequence[] names = new CharSequence[infos.size()];
    for (int i = 0; i < infos.size(); i++) {
        names[i] = infos.get(i).loadLabel(pm);
    }
    new AlertDialog.Builder(this).setItems(names,
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ResolveInfo info = infos.get(which);
                    intent.setClassName(info.activityInfo.packageName,
                            info.activityInfo.name);
                    startActivity(intent);
                }
            }).show();
于 2013-01-09T03:52:51.297 回答
1

据我所知,您无法设置选择器对话框的样式。这是一个系统级的活动,并使用默认的系统主题。

于 2013-01-09T03:49:21.310 回答
0

你也可以这样使用

        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(android.content.Intent.EXTRA_SUBJECT,getString(R.string.app_name));
        intent.putExtra(android.content.Intent.EXTRA_TEXT,getString(R.string.tell_your_frnd));
        PackageManager pm = getPackageManager();
        final List<ResolveInfo> infos = pm.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        name = new String[infos.size()];
        image=new Drawable[infos.size()];
        for (int i = 0; i < infos.size(); i++) 
        {
            name[i] = (String) infos.get(i).loadLabel(pm);
            image[i]=infos.get(i).loadIcon(pm);
        }


        CustomGrid adapter = new CustomGrid(ShareActivity.this,name,image);
        mGridView.setAdapter(adapter);

        mGridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
        {

            ResolveInfo info = infos.get(position);

            intent.setClassName(info.activityInfo.packageName,
                    info.activityInfo.name);
            startActivity(intent);
        }
    });
于 2015-09-01T11:28:35.937 回答