4

enter image description here的样式共享动作提供商的Android

这里是我如何共享通过分享行动提供内容:

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")); 

我想样式有窗口的份额。我想将文本颜色和荧光笔线颜色从默认蓝色更改为我的自定义颜色。我使用全息灯主题。我不知道如何设计这些元素。任何人都可以指出一个参考来做到这一点?

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

+0

你可以对你想要什么有点清楚了吗?如果你能显示你以前的代码和努力,那会更好。 – Kanth

+0

@Appu更新了 – intrepidkarthi

回答

1

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

+0

这个问题。我在哪里可以找到android.widget.ShareActionProvider的样式元素?可能吗? – intrepidkarthi

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(); 
+0

如果可用,您可以指出一个参考吗? – intrepidkarthi

+0

我无法找到参考,所以我为你写了一个演示。 – faylon

+0

谢谢@faylon。我会试试这个 – intrepidkarthi

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); 
     } 
    });