android.widget.ShareActionProvider does not work on the emulator

來源:互聯網
上載者:User
from:http://code.google.com/p/android/issues/detail?id=25467Reported by Lars.Vo...@gmail.com, Feb 13, 2012
If I add a ShareActionProvider to my application it works file on a real device but not on the emulator. If I press the Share button in the emulator nothing happens.Here is my menu:<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" >   <item android:id="@+id/menu_share"          android:title="Share"          android:showAsAction="ifRoom"          android:actionProviderClass="android.widget.ShareActionProvider" />    <item        android:id="@+id/item1"        android:showAsAction="ifRoom"        android:title="Hello">    </item>    <item        android:id="@+id/item2"        android:showAsAction="ifRoom"        android:title="This will not fit in the Action bar">    </item></menu>I add this menu to my Activity:@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.mymenu, menu);provider = (ShareActionProvider) menu.findItem(R.id.menu_share).getActionProvider();doShare();return true;}public void doShare() {Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT, "Message");provider.setShareIntent(intent);}
Comment 1 by project member x...@android.com, Feb 23, 2012

(No comment was entered for this change.)
    Status: 
Owner: ad...@android.com
Labels: -Component-Tools Component-Framework   Comment 2 by jakewhar...@gmail.com, Mar 29, 2012

This is due to their only being a single (or zero) applications which support that intent. If this is the case the provider will not allow any interaction. It would be nice if there was a Toast or the dropdown still showed with a message of some sort.
Comment 3 by buz...@gmail.com, Mar 30, 2012

I agree with Jake : this is because the emulator do not have many apps that can answer the intent.
Comment 4 by Lars.Vo...@gmail.com, Mar 30, 2012

SMS app is available and this accepts Intent.ACTION_SEND. If I trigger this directly it also works. Hence I suspect still a bug.
Comment 5 by project member ad...@android.com, Mar 30, 2012

(No comment was entered for this change.)
    Owner: svetosla...@android.com   Comment 6 by dfuern...@gmail.com, Jun 7, 2012

If you add another app (see attachment for example) to your emulator supporting ShareIntents of type text/plain and accepting Intent.ACTION_SEND, the ShareProvider will work. It then also displays the already mentioned Messaging App. This however should be considered a workaround. 
pva-sharetarget.zip 
147 KB   Download
Comment 7 by digi...@gmail.com, Aug 1, 2012

I can reproduce this bug too, and the weird thing is it works if you've opened the list at least once, with at least two intents. For example:Two activities: Open list.Change intent to one that resolves to one activity.Open list: Still works.It doesn't work if you haven't yet opened it.
Comment 8 by digi...@gmail.com, Aug 1, 2012

Seems related to these lines in ActivityChooserView$ActivityChooserViewAdapter:if (!mShowDefaultActivity && mDataModel.getDefaultActivity() != null) {activityCount--;}IF you haven't opened the list yet, activityCount gets subtracted by 1, getCount() returns 0 and the button gets disabled. The list still contains one activity.The title should be changed, because this doesn't really have anything to do with the emulator and affects real production devices. Even if there's only 1 activity, it should still be shown instead of disabling the button.
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.