2013-05-27 13 views
5

自分のアクティビティからアンドロイドのmms/smsメイン会話のインテントを起動するにはどうすればよいですか?androidのメインSMS会話のインテントを開く

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); 

そして私は、私はデバイスの一つに、このコードを実行すると、それも働いていたと思うが、今、私は次のエラーを取得:私は今まで発見された最良の答えでした

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 

注意を: 私はsms/mmsコンポーザー画面を開いて、SMSを送信するのではなく、到着したすべてのSMS/mmsメッセージが保存されているメインSMS画面に興味があります。

答えて

0

これはギャラクシーS3およびS4で

+0

私はあなただけのメインMMS/SMSの会話の意図を開くために、すべてのこれらのアクセス許可を追加する必要はないと思います。それにもかかわらず、私は失われたものを私のマニフェストファイルに追加して、Permission Denialのエラーを受け取ります。おそらく、いくつかのデバイスがcom.android.mms.ui.ConversationListにアクセスできないためでしょうか? – MikeL

+0

はS3で動作しません –

3

を助け、私たちはintent.setClassName( "com.android.mms"、「com.androidを使用する必要があります希望

<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" /> 

マニフェストファイルにこれらの権限を追加します。 .mms.ui.ConversationComposer ");私はそれが働いてしまったフレッシャー答えからの助けを借りて

3

は、ここで私が使用するコードは次のとおりです。

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; 
    } 
関連する問題