简体   繁体   English

ExceptionInInitializerError - 服务和库

[英]ExceptionInInitializerError - service and library

I have unexpectedly encountered the ExceptionInIntiialize Error while trying to run my application. 尝试运行我的应用程序时,我意外地遇到了ExceptionInIntiialize错误。 I believe the error is prompted when users click on the quick chat button. 我相信当用户点击快速聊天按钮时会提示错误。

10-09 18:27:08.450: E/AndroidRuntime(999): FATAL EXCEPTION: main
10-09 18:27:08.450: E/AndroidRuntime(999): java.lang.ExceptionInInitializerError
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.ServiceFactory.createUserAgent(ServiceFactory.java:44)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.DefaultSinchClient.<init>(DefaultSinchClient.java:157)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.client.InternalSinchClientFactory.createSinchClient(InternalSinchClientFactory.java:14)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.DefaultSinchClientBuilder.build(DefaultSinchClientBuilder.java:95)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.dooba.beta.MessageService.startSinchClient(MessageService.java:56)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.dooba.beta.MessageService.onStartCommand(MessageService.java:40)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.access$1900(ActivityThread.java:130)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.os.Looper.loop(Looper.java:137)
10-09 18:27:08.450: E/AndroidRuntime(999):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.reflect.Method.invokeNative(Native Method)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.reflect.Method.invoke(Method.java:511)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-09 18:27:08.450: E/AndroidRuntime(999):  at dalvik.system.NativeStart.main(Native Method)
10-09 18:27:08.450: E/AndroidRuntime(999): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sinch-android-rtc: findLibrary returned null
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.Runtime.loadLibrary(Runtime.java:365)
10-09 18:27:08.450: E/AndroidRuntime(999):  at java.lang.System.loadLibrary(System.java:535)
10-09 18:27:08.450: E/AndroidRuntime(999):  at com.sinch.android.rtc.internal.natives.jni.UserAgentFactory.<clinit>(UserAgentFactory.java:9)

Below is the code: Below is the code: 下面是代码:下面是代码:

public class matchOptionActivity1 extends Activity{

     protected TextView mUserRetrieved;
        private String currentUserId;

        protected TextView mUserActivityNameRetrieved;
        protected TextView mUserNameRetrieved;
        protected TextView mUserAgeRetrieved;
        protected TextView mUserHeadlineRetrieved;
        String userGender = ParseUser.getCurrentUser().getString("Gender");
        String activityName = ParseUser.getCurrentUser().getString("ActivityName");
        Number maxDistance = ParseUser.getCurrentUser().getNumber(
                "Maximum_Distance");
        String userLookingGender = ParseUser.getCurrentUser().getString(
                "Looking_Gender");
        Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
        Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
        Number userage = ParseUser.getCurrentUser().getNumber("UserAge");
        private FeedbackDialog feedBack;
        private ProgressDialog progressDialog;
        private BroadcastReceiver receiver;
        private MessageService.MessageServiceInterface sinchService;
        private Boolean bound = false;

        private Intent intent;
        private Intent serviceIntent;



   @Override
   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);
       setContentView(R.layout.matchoption);



    feedBack = new FeedbackDialog(this, "AF-46D8F2A319EA-0A");
       ParseQuery<ParseUser> query = ParseUser.getQuery();

       // query.whereEqualTo("ActivityName",userActivitySelectionName);

       query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
               .getObjectId());
       // users with Gender = currentUser.Looking_Gender
       query.whereEqualTo("Gender", userLookingGender);
       // users with Looking_Gender = currentUser.Gender
       query.whereEqualTo("Looking_Gender", userGender);
       query.setLimit(1);
       //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
       query.whereEqualTo("ActivityName", activityName);
       query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
       query.whereLessThanOrEqualTo("UserAge", maximumAge);

       ParseQuery<ParseUser> query2 = ParseUser.getQuery();

       // query.whereEqualTo("ActivityName",userActivitySelectionName);

       query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
               .getObjectId());
       // users with Gender = currentUser.Looking_Gender
       query2.whereEqualTo("Gender", userLookingGender);
       // users with Looking_Gender = currentUser.Gender
       query2.whereEqualTo("Looking_Gender", userGender);
       query2.setLimit(1);
       //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
       query2.whereEqualTo("ActivityName", activityName);
       query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
       query2.whereLessThanOrEqualTo("UserAge", maximumAge);

       query.findInBackground(new FindCallback<ParseUser>() {
           @Override
           public void done(List<ParseUser> objects,ParseException e) {

               for(int i=0;i<objects.size();i++){
                   // Do whatever you need to extract object from "users"
                   ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
                   query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                           .getObjectId());
                   // users with Gender = currentUser.Looking_Gender
                   query.whereEqualTo("Gender", userLookingGender);
                   // users with Looking_Gender = currentUser.Gender
                   query.whereEqualTo("Looking_Gender", userGender);
                   query.setLimit(1);
                   //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                   query.whereEqualTo("ActivityName", activityName);
                   query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                   query.whereLessThanOrEqualTo("UserAge", maximumAge);

                   mUserNameRetrieved = (TextView) findViewById(R.id.tvmname1);

                   mUserNameRetrieved.setText(objects.get(i).get("Name").toString()); 



               }
   }//for loop
           });

       query2.findInBackground(new FindCallback<ParseUser>() {

           @Override
           public void done(List<ParseUser> objects,ParseException e) {

               for(int i=0;i<objects.size();i++){
                   // Do whatever you need to extract object from "users"
                      ParseQuery<ParseObject> query2 = ParseQuery.getQuery("User");
                      query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                              .getObjectId());
                      // users with Gender = currentUser.Looking_Gender
                      query2.whereEqualTo("Gender", userLookingGender);
                      // users with Looking_Gender = currentUser.Gender
                      query2.whereEqualTo("Looking_Gender", userGender);
                      query2.setLimit(1);
                    //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                      query2.whereEqualTo("ActivityName", activityName);
                      query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                      query2.whereLessThanOrEqualTo("UserAge", maximumAge);


                   ParseFile image = objects.get(i).getParseFile("ProfilePicture");


                   ParseImageView imageView = (ParseImageView) findViewById(R.id.profilePictureresultm);



                    // The placeholder will be used before and during the fetch, to be replaced by the fetched image
                    // data.
                    imageView.setPlaceholder(getResources().getDrawable(R.drawable.profile_pict));
                    imageView.setParseFile(image);

                    imageView.loadInBackground(new GetDataCallback() {
                      @Override
                      public void done(byte[] data, ParseException e) {
                          if (data != null) {
                              Log.i("ParseImageView", "Fetched: " + data.length);
                            } else {
                              Log.e("ParseImageView", "Error fetching: " + e.getMessage());
                            }
                      }


                });
               }
   }//for loop
           });




       final Button ichat = (Button) this.findViewById(R.id.btnQuickChat);
        ichat.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


           openConversation();


            }


            private void openConversation() {
                // TODO Auto-generated method stub
                  ParseQuery<ParseUser> query = ParseUser.getQuery();
                     query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                           .getObjectId());
                        // users with Gender = currentUser.Looking_Gender
                         query.whereEqualTo("Gender", userLookingGender);
                         // users with Looking_Gender = currentUser.Gender
                          query.whereEqualTo("Looking_Gender", userGender);
                         query.setLimit(1);
                        query.whereEqualTo("ActivityName", activityName);
                        query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                         query.whereLessThanOrEqualTo("UserAge", maximumAge);


                    query.findInBackground(new FindCallback<ParseUser>() {
                        public void done(List<ParseUser> user, ParseException e) {
                              if (e == null) {

                                   Intent intent = new Intent(getApplicationContext(), MessagingActivity1.class);
                                   startService(serviceIntent);
                                   intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                                   startActivity(intent);
                               } else {
                                   Toast.makeText(getApplicationContext(),
                                       "Error finding that user",
                                           Toast.LENGTH_SHORT).show();
                               }
                           }
                        });
                    }
        });


}



 //show a loading spinner while the sinch client starts
   private void showSpinner() {
       progressDialog = new ProgressDialog(this);
       progressDialog.setTitle("Loading");
       progressDialog.setMessage("Please wait...");
       progressDialog.show();

       receiver = new BroadcastReceiver() {
           @Override
           public void onReceive(Context context, Intent intent) {
               Boolean success = intent.getBooleanExtra("success", false);
               progressDialog.dismiss();
               if (!success) {
                   Toast.makeText(getApplicationContext(), "Messaging service failed to start", Toast.LENGTH_LONG).show();
               }
           }
       };

       LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("com.dooba.beta.matchOptionActivity1"));
   }

   @Override
   public void onResume() {

       super.onResume();
   }
}

screens of where library is 图书馆所在的屏幕 在此输入图像描述

All the best, 祝一切顺利,

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sinch-android-rtc: findLibrary returned null indicates that the Sinch SDK is unable to find the native binary that is required for the SDK to work correctly. Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sinch-android-rtc: findLibrary returned null表示Sinch SDK无法找到SDK正常工作所需的本机二进制文件。 Make sure that you have the complete libs folder copied from the Sinch SDK and make sure that all of the .so files are being included in the final APK. 确保从Sinch SDK复制了完整的libs文件夹,并确保所有.so文件都包含在最终的APK中。

Please note that the Sinch SDK only supports armeabi and armeabi-v7a at the moment, so if you are trying to run this on an x86 device it will not work. 请注意,Sinch SDK目前仅支持armeabiarmeabi-v7a ,因此如果您尝试在x86设备上运行它,它将无法工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM