2013-11-23 5 views
6

私はSMSアプリケーションで作業しています。 Nexus 4をAndroid 4.4、KitKatにアップデートした昨日まではすべてがスムーズでした。 SMSを既読/未読としてマークし、スレッド内のすべてのメッセージを削除するなどの機能は動作しなくなりました。なぜこうなった?それは他のサムスンのデバイス(KitKatを実行していない)で動作します。私が使用して、スレッド内のすべてのメッセージを削除するためのSMSメッセージをKitKatで動作しないメッセージの読み取り/未読または削除としてマーク

public static void markRead(final Context context, final Uri uri, 
      final int read) { 
     Log.d(TAG, "markRead(" + uri + "," + read + ")"); 
     if (uri == null) { 
      return; 
     } 
     String[] sel = Message.SELECTION_UNREAD; 
     if (read == 0) { 
      sel = Message.SELECTION_READ; 
     } 
     final ContentResolver cr = context.getContentResolver(); 
     final ContentValues cv = new ContentValues(); 
     cv.put(Message.PROJECTION[Message.INDEX_READ], read); 
     try { 
      cr.update(uri, cv, Message.SELECTION_READ_UNREAD, sel); 
     } catch (IllegalArgumentException e) { 
      Log.e(TAG, "failed update", e); 
      Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
} 

これは、読み取りまたは未読としてメッセージをマークするための私のコードです

public static void deleteMessages(final Context context, final Uri uri, 
      final int title, final int message, final Activity activity) { 

     Log.i(TAG, "deleteMessages(..," + uri + " ,..)"); 
     final Builder builder = new Builder(context); 
     builder.setTitle(title); 
     builder.setMessage(message); 
     builder.setNegativeButton(android.R.string.no, null); 
     builder.setPositiveButton(android.R.string.yes, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(final DialogInterface dialog, 
          final int which) { 
         final int ret = context.getContentResolver().delete(
           uri, null, null); 
         Log.d(TAG, "deleted: " + ret); 
         if (activity != null && !activity.isFinishing()) { 
          activity.finish(); 
         } 
         if (ret > 0) { 
          Conversation.flushCache(); 
          Message.flushCache(); 
          SmsReceiver.updateNewMessageNotification(context, 
            null); 
          // adapter.notifyDataSetChanged(); 
         } 
         try { 
          testFromFragment(context); 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
     builder.show(); 
} 
+0

http://www.youtube.com/watch?v=mdq0R2WQssQ http://android-developers.blogspot.in/2013/10/getting-your-sms-apps-ready-for-kit-katskat。 html http://developer.android.com/about/versions/android-4.4.html#SMS 私のYouTubeリンクはとても役に立ちました – playmaker420

答えて

16

のAndroid 4.4では、いくつかのものは変更されていますSMSに関してその中には、デフォルトのSMSアプリとして登録されているアプリだけがプロバイダへの書き込みアクセス権を持っているという事実があります。

Check here SMSの変更に関する短い告知。

Check this link詳細については、こちらをご覧ください。これは、アプリがデフォルトのメッセージングアプリになるために満たす必要のある基準を説明しています。

And here's公式の楽しいもの。

あなたのアプリがデフォルトのメッセージングアプリでない場合は、指定された機能が動作しなくなった原因になります。


デフォルトのプロバイダ制限の回避策は、answer hereにあります。