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