2015-09-22 137 views
1

我是Android开发新手。
任何人都可以告诉我在什么情况下这段代码会崩溃我的应用程序?Android:意图崩溃应用程序

请给我参考。

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); 
sendIntent.setType(HTTP.PLAIN_TEXT_TYPE); // "text/plain" MIME type 
startActivity(sendIntent); 
+4

请张贴崩溃日志 – Euporie

+0

sendIntent.setType( “text/plain的”); –

回答

2

用绳子

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); 
sendIntent.setType("text/plain"); 

// Verify that the intent will resolve to an activity 
if (sendIntent.resolveActivity(getPackageManager()) != null) { 
    startActivity(sendIntent); 
} 

创建文本消息的二进制数据

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
shareIntent.setType("image/jpeg"); 
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 

注意以下几点:

您可以使用MIME类型的“/ “,但这只会匹配能够处理泛型的活动数据流。

+0

上面的代码示例是正确的答案。 这是代码示例的精确副本,位于 http://developer.android.com/guide/components/intents-filters.html – John61590

0

使用许可在您的清单

uses-permission android:name="android.permission.SEND_SMS" 

,并设置类型像下面

sendIntent.setType("vnd.android-dir/mms-sms"); 
+0

上面这些全部不需要仅仅用于发送简单文本 – Pavan

2

请看看这个

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plan"); 
intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body."); 

startActivity(Intent.createChooser(intent, "Send Email")); 
1

试试这个,

,因为你的以下行,

sendIntent.setAction(Intent.ACTION_SEND); 

你可以采取允许在这样manifest.xml文件,

<uses-permission android:name="android.permission.SEND_SMS" /> 

还可以设置键入text/plain

sendIntent.setType("text/plain"); 
1

隐含意图指定可以调用一个动作设备上的任何应用程序都可以执行此操作。当您的应用程序无法执行操作时,使用隐式意图很有用,但其他应用程序可能可以。如果有多个注册的应用程序可以处理此请求,则系统将提示用户选择要使用的应用程序。

但是,有可能没有可以处理您的意图的应用程序。在这种情况下,当您调用startActivity()时,您的应用程序将崩溃。为了避免这种情况,在调用startActivity()之前,您应该首先验证系统中是否至少有一个注册应用程序能够处理该意图。为了你的意图对象上做到这一点使用resolveActivity():

// Verify that there are applications registered to handle this intent 
// (resolveActivity returns null if none are registered) 
if (sendIntent.resolveActivity(getPackageManager()) != null) { 
    startActivity(sendIntent); 
}