2013-05-27 35 views
5

Tôi làm cách nào để khởi chạy ý định trò chuyện chính của android mms/sms từ hoạt động của riêng mình? Câu trả lời tốt nhất mà tôi tìm thấy cho đến bây giờ là:Mở mục đích hội thoại SMS chính trên android

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList"); 
context.startActivity(intent); 

Và tôi nghĩ rằng nó thậm chí làm việc khi tôi chạy mã này vào một trong những thiết bị này, nhưng bây giờ tôi nhận được lỗi sau:

Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.android.mms/.ui.ConversationList } from ProcessRecord{460a37f8 6949:msc.test/10081} (pid=6949, uid=10081) requires null 

Note : Tôi không quan tâm đến việc mở màn hình soạn nhạc sms/mms để gửi sms, nhưng màn hình sms chính nơi tất cả các tin nhắn sms/mms đến được lưu trữ.

Trả lời

0

Thêm các điều khoản trong file manifest

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_MMS" /> 

Hope this helps

+0

Tôi không nghĩ rằng bạn nên thêm tất cả những điều khoản chỉ để mở MMS chính/SMS chuyện ý định. Tuy nhiên tôi đã thêm những cái còn thiếu vào tệp kê khai của mình và vẫn nhận được lỗi Từ chối quyền. Có thể vì một số thiết bị không thể truy cập com.android.mms.ui.ConversationList? – MikeL

+0

không hoạt động trên S3 –

3

Trong Galaxy S3 và S4, chúng ta nên sử dụng intent.setClassName ("com.android.mms", "com.android .mms.ui.ConversationComposer ");

3

Với sự giúp đỡ từ câu trả lời Fresher tôi nhận nó làm việc, đây là đoạn code tôi sử dụng:

private boolean tryOpenSMSConversation(){ 
     boolean isWorking = false; 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     // DEFAULT ANDROID DEVICES 
     intent.setComponent(new ComponentName("com.android.mms", 
       "com.android.mms.ui.ConversationList")); 
     isWorking = tryActivityIntent(this, intent); 
     if (!isWorking) { 
      // SAMSUNG DEVICES S3|S4|NOTE 2 etc. 
      intent.setComponent(new ComponentName("com.android.mms", 
        "com.android.mms.ui.ConversationComposer")); 
      isWorking = tryActivityIntent(this, intent); 
     } 
     if (!isWorking) { 
      // OPENS A NEW CREATE MESSAGE 
      intent = new Intent(Intent.ACTION_MAIN); 
      intent.setType("vnd.android-dir/mms-sms"); 
      isWorking = tryActivityIntent(this, intent); 
     } 
     if (!isWorking) { 
      // TODO try something else 
     } 
     return isWorking; 
    } 

    public static boolean tryActivityIntent(Context context, 
      Intent activityIntent) { 

     // Verify that the intent will resolve to an activity 
     try { 
      if (activityIntent.resolveActivity(context.getPackageManager()) != null) { 
       context.startActivity(activityIntent); 
       return true; 
      } 
     } catch (SecurityException e) { 
      return false; 
     } 
     return false; 
    } 
Các vấn đề liên quan