Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");
startActivity(Intent.createChooser(intent, "Send Email"));
Run Code Online (Sandbox Code Playgroud)
上面的代码打开一个对话框,显示以下应用程序: - 蓝牙,Google Docs,Yahoo Mail,Gmail,Orkut,Skype等.
实际上,我想过滤这些列表选项.我想只显示与电子邮件相关的应用程序,例如Gmail,Yahoo Mail.怎么做?
我在"Android Market"应用程序上看到了这样的例子.
该对话框仅显示电子邮件应用程序,例如Gmail,Yahoo Mail等.它不显示蓝牙,Orkut等.什么代码产生这样的对话?
我想利用内置的意图选择器来显示自定义过滤的应用列表,供用户选择和启动.
我知道如何获取已安装的软件包列表:
final Intent myIntent = new Intent(android.content.Intent.ACTION_MAIN);
List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(myIntent, 0);
Run Code Online (Sandbox Code Playgroud)
此时,我想根据包名称中包含的特定字符串(或字符串的变体)过滤列表,我也可以弄清楚如何操作.
但是这里我被卡住了.据我所知,Intent.createChooser()
只需要一个目标Intent作为参数.我希望有一个重载基于包和类名或其他东西的意图列表.但我没有看到类似的东西.我在某处错过了吗?
所以问题是,这可能与内置选择器有关,还是我必须使用AlertDialog Builder构建自己的选择器?我希望避免后者.
提前致谢.
我想将Twitter集成到我的Android应用程序中,以便我可以将消息发布到Twitter.
现在我可以使用共享意图打开共享对话框
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, link);
startActivity(Intent.createChooser(intent, "Share with"));
Run Code Online (Sandbox Code Playgroud)
但我需要对话框不要出现并直接分享到一个社交网络(例如FB或Twitter)
任何建议如何做到这一点?
我的应用程序集成了电子邮件,用户可以直接从应用程序提交错误报告,反馈等.我正在使用application/octet-stream作为Intent的SetType.当您提交电子邮件时,您将获得内容选择器,并显示来自Evernote,Facebook,电子邮件等的各种项目.
如何让此选择器仅显示电子邮件,以免将用户与适合内容选择器类型的所有其他项目混淆?
谢谢.
我在Android应用程序中单击按钮时尝试打开Gmail Compose屏幕.我需要一些来自Google的API密钥吗?或者我的按钮onClickListener需要做什么?
非常感谢任何形式的见解.
我使用下面的代码来共享图像但不幸的是它只适用于Line,而不适用于Facebook和Viber
码:
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/png");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(G.DIR_APP + "/sample_image.png"));
startActivity(Intent.createChooser(share, "Share image"));
Run Code Online (Sandbox Code Playgroud) 我创建了一个分享到facebook,twitter等的应用程序.但是我想根据用户共享的对象执行不同的功能 ,例如,如果用户共享到Facebook做一件事但是如果用户共享到twitter那么另一个.
我该怎么做呢?
我的代码到目前为止如下:
private void ShareSub() {
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(
Intent.EXTRA_TEXT,
"You've just shared "
+ "Awesome");
startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)
以上代码的进一步说明:
当用户按下操作栏中的" menu_item_share "按钮时,触发上述功能.然后,此功能会显示如下图所示的框,允许用户选择特定选项,例如Facebook或Twitter.Intent.EXTRA_TEXT
然后将该内容共享给该特定应用.
我想要的是,当用户点击例如Facebook时,会调用特定的功能,例如通过他们的(Facebook的)api等进行共享.
我没有像下面这样使用 ShareActionProvider:
<item
android:id="@+id/your_share_item"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom"
android:title="@string/share"/>
Run Code Online (Sandbox Code Playgroud)
相反,我创建了一个调用ShareSub函数的简单按钮:
<item
android:id="@+id/menu_item_share"
android:icon="@android:drawable/ic_menu_share"
android:showAsAction="ifRoom"
android:title="Share"/>
Run Code Online (Sandbox Code Playgroud)
我选择这样做的原因是,我不希望最近共享的按钮出现,如下图所示.当我尝试使用下面建议的代码时,这会导致我出现问题,因为我没有使用过ShareActionProvider.
我可以使用以下intent-filter将我的应用程序挂钩到"共享页面"功能:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
Run Code Online (Sandbox Code Playgroud)
但我想更进一步,将过滤器限制为包含特定网址的意图,例如YouTube视频的网址.我试过这样的东西,但它不起作用:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="text/plain"
android:scheme="http"
android:host="m.youtube.com"
/>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我目前正在尝试与gmail,facebook和twitter共享文本.我正在使用共享意图方法来分享.以下是我以前分享的代码
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("plain/text");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "My text");
startActivity(Intent.createChooser(sharingIntent,"Share using"));
Run Code Online (Sandbox Code Playgroud)
上面的代码只显示了gmail和skype等共享选项.为什么即使我的设备中安装了facebook和twitter应用程序,Facebook和Twitter选项也没有显示在列表中?