2017-01-07 33 views
2

我想從我的應用程序發送短信,爲此我寫了下面的代碼,這很簡單。但我面臨的問題是,沒有活動上發送消息發送短信將不會startActivity

方法來發送消息開始:

private void sendSMS(Context context, String phone, String msg){ 
    Intent smsIntent = new Intent(Intent.ACTION_VIEW); 

    smsIntent.setData(Uri.parse("smsto:")); 
    smsIntent.putExtra("address", phone); 
    smsIntent.putExtra("sms_body", msg); 
    smsIntent.setType("vnd.android-dir/mms-sms"); 

    try { 
     startActivity(smsIntent); 
     finish(); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(context, "SMS faild, please try again later.", Toast.LENGTH_SHORT).show(); 
    } 
} 

許可清單中

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

它總是顯示吐司寫在catch()

+0

你的棉花糖或更高版本的測試? – Mrinmoy

回答

0

當你得到烤麪包總是意味着它進入catch()。美中不足的是處理ActivityNotFoundException

請點擊此鏈接,如果它可以幫助:

https://stackoverflow.com/a/10613004/5722385

如果您正在使用棉花糖工作及以上,請去通過下面的鏈接,它是具有示例如何添加運行時權限

https://stackoverflow.com/a/34969604/5722385

因爲發送短信被分組到危險的權限,所以你需要在運行時處理它,只有在menifest文件中寫入權限是不夠的。

如果您希望添加運行時權限,您可以啓用您的手機權限,請按照以下步驟操作。

轉到設置 - >應用程序 - >選擇你的應用程序 - >權限 - >啓用 短信權限。

您還可以檢查該鏈接以獲取危險的權限列表中,應該在運行時

https://developer.android.com/guide/topics/permissions/requesting.html

+0

這是感謝 –

1

處理您要執行的代碼是舊的。 這是代碼從您的APP

public void sendSMSFunction(){ 
    SmsManager smsManager = SmsManager.getDefault(); 
    String messageContent = "Your Content"; 
    smsManager.sendTextMessage("Destination_PhoneNumber", null, messageContent, null, null); 
} 

發送短信和此許可添加到您的清單文件

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

如果你是在Android的棉花糖及以上,你將要問執行此運行時權限。

+0

我不想在別人的背後發送短信。我只是想用電話號碼填寫默認的文本信使。但你的第二反應是好的 –

+0

對不起,我不知道。但是你可以做的是創建一個活動,其中包含用於輸入數字,消息和兩個按鈕發送和取消的字段。你可以從按鈕點擊發送短信。這樣用戶就會一直在你的應用中,並且不會在任何人的背後發送短信。 –

+0

我其實可以做到這一點。因爲這是一個相對簡單的生成活動,看起來更乾淨。我只是想阻止權限的需要。 –

2

試試這個:

也沒有必要爲:

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

只需使用此代碼:

Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
       sendIntent.setData(Uri.parse("sms:")); 
       sendIntent.putExtra("sms_body", "Check out My app for your smartphone. Download it today from https://google.com"); 
       try { 
        startActivity(sendIntent); 
       } catch (ActivityNotFoundException e) { 
        e.printStackTrace();       
       } 
+0

謝謝。你的代碼行 sendIntent.setData(Uri.parse(「sms:」)); 幫我了。我正在做「smsto:」形式的例子,我正在回顧並打破了這個系統 –