[英]Implicit intent causes the app to crash at button press
為了理解隱式意圖是如何工作的,我想創建一個包含兩個edittext和一個button的布局。 在第一個edittext 中,用戶應該輸入他/她的電子郵件地址,在第二個textview 中他/她應該輸入收件人的電子郵件地址,當他/她點擊按鈕時,所有組件都為 Action 注冊SEND 應該出現,包括我的應用程序。
以下是我的嘗試和logcat :
UPDATED_JavaCode
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String from = et_from.getText().toString();
String to = et_to.getText().toString();
String data = from + to;
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(android.content.Intent.EXTRA_TEXT, from + to);
//i.setData(Uri.parse(data.toString()));
startActivity(i);
}
});
更新清單:
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".EmailActivity"
android:label="@string/title_activity_intents_test01" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="CustomActivity"> </activity>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="text/plain"/>
</intent-filter>
</application>
日志:
11-15 14:47:19.714: E/AndroidRuntime(18239): FATAL EXCEPTION: main
11-15 14:47:19.714: E/AndroidRuntime(18239): Process: com.example.emailactivity, PID:18239
11-15 14:47:19.714: E/AndroidRuntime(18239): android.content.ActivityNotFoundException:
No Activity found to handle Intent { act=android.intent.action.SEND dat=yt (has extras)
}
11-15 14:47:19.714: E/AndroidRuntime(18239): at
android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1672)
11-15 14:47:19.714: E/AndroidRuntime(18239): at
android.app.Instrumentation.execStartActivity(Instrumentation.java:1442)
11-15 14:47:19.714: E/AndroidRuntime(18239): at
com.example.emailactivity.EmailActivity$1.onClick(EmailActivity.java:46)
使用隱式意圖時,可能沒有應用程序可以處理您的意圖(在其他問題之間,這似乎是您的問題)。 為避免這種情況,在調用 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);
}
ACTION_SEND
不使用setData()
-- 請刪除它。
此外,請使用ACTION_SEND
文檔中記錄的密鑰作為您的附加功能。 請注意,沒有"from"
也沒有"to"
,因此您可以刪除這些額外內容。 您需要提供EXTRA_TEXT
或EXTRA_STREAM
以提供您共享的實際內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.