CordovaはAndroid appを開発しBundle解析を行う

2419 ワード

(2018/2/9に作成)
最近,ハイブリッド開発プロジェクトで遭遇したデータ解析方式で,Cordovaを用いて原生とjsの通信を行い,jsメッセージを原生で受信する方式である.
final BroadcastReceiver popReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                
            }
}
LocalBroadcastManager.getInstance(this).registerReceiver(popReceiver, new IntentFilter(Constants.LETTER_LIST));

だからjsメッセージを受け取った後、すべてintentから取って、普通はすべてこのようにします
Bundle extras = intent.getExtras();

その後bundleからデータを取得し、文字列であれば直接解析すればよい.
String view = extras.getString(Constants.VIEW);

複雑なデータ、例えばオブジェクト、集合jは、今日述べる方法で以下のように解析する必要があります.
Bundle[{content=Bundle[{0=Bundle[{messages=Bundle[{0=Bundle[{type=us, content=      , created_at=2018-02-09 16:55:06, headimgurl=https://naneng-user.oss-cn-shanghai.aliyuncs.com
/default_user_head.jpg}], 1=Bundle[{type=us, content=         K, created_at=2018-02-09 
16:55:11, headimgurl=https://naneng-user.oss-cn-shanghai.aliyuncs.com/default_user_head.jpg}], 
2=Bundle[{type=us, content=T  OK, created_at=2018-02-09 16:55:16, headimgurl=https://naneng-
user.oss-cn-shanghai.aliyuncs.com/default_user_head.jpg}]}], id=116, nickname=17621421360}]}]}]

解析方法:
//          bundle,       bundle,   bundle            ,      []    ,{}    ,     bundle   
Bundle extras = intent.getExtras();
                    if (extras != null){
                        try {
                            JSONObject jsonObject = new JSONObject();
                            // content key   bundle     ,    ,       ,0,1,2   key
                            Bundle content = extras.getBundle("content");

                            for (int i=0;i