1

我正在尝试构建一个简单的 android 应用程序,它有一个带有两个按钮的活动,上面有两个带有setOnClickListener方法的按钮。但是在尝试在模拟器中运行 android 项目时,该应用程序无法安装说明

[2013-03-25 13:03:38 - MyHapiSample] Installation error: INSTALL_FAILED_UID_CHANGED
[2013-03-25 13:03:38 - MyHapiSample] Please check logcat output for more details.
[2013-03-25 13:03:38 - MyHapiSample] Launch canceled!

我在 logcat 视图中收到以下错误

03-25 11:52:20.430: D/ExchangeService(630): Received deviceId from Email app: null
03-25 11:52:20.430: D/ExchangeService(630): !!! deviceId unknown; stopping self and   retrying
03-25 11:52:22.543: W/Trace(429): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:22.564: W/Trace(429): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.503: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.513: D/ExchangeService(630): !!! EAS ExchangeService, onCreate
03-25 11:52:25.523: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.523: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.523: D/ExchangeService(630): !!! EAS ExchangeService, onStartCommand,   startingUp = false, running = false
03-25 11:52:25.533: W/ActivityManager(274): Unable to start service Intent {  act=com.android.email.ACCOUNT_INTENT } U=0: not found
03-25 11:52:25.533: D/ExchangeService(630): !!! Email application not found; stopping  self
03-25 11:52:25.544: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.544: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.544: D/ExchangeService(630): !!! EAS ExchangeService, onStartCommand, startingUp = true, running = false
03-25 11:52:25.564: W/ActivityManager(274): Unable to start service Intent {  act=com.android.email.ACCOUNT_INTENT } U=0: not found
03-25 11:52:25.564: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.573: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.584: W/Trace(630): Unexpected value from nativeGetEnabledTags: 0
03-25 11:52:25.593: E/ActivityThread(630): Service  com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cecfc8 that was originally bound here
03-25 11:52:25.593: E/ActivityThread(630): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cecfc8 that was originally bound here
03-25 11:52:25.593: E/ActivityThread(630):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-25 11:52:25.593: E/ActivityThread(630):  at  android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-25 11:52:25.593: E/ActivityThread(630):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-25 11:52:25.593: E/ActivityThread(630):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-25 11:52:25.593: E/ActivityThread(630):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
03-25 11:52:25.593: E/ActivityThread(630):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
03-25 11:52:25.593: E/ActivityThread(630):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-25 11:52:25.593: E/ActivityThread(630):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-25 11:52:25.593: E/ActivityThread(630):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-25 11:52:25.593: E/ActivityThread(630):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
03-25 11:52:25.593: E/ActivityThread(630):  at java.lang.Thread.run(Thread.java:856)
03-25 11:52:25.615: E/StrictMode(630): null
03-25 11:52:25.615: E/StrictMode(630): android.app.ServiceConnectionLeaked: Service  com.android.exchange.ExchangeService has leaked ServiceConnection  com.android.emailcommon.service.ServiceProxy$ProxyConnection@40cecfc8 that was originally  bound here

03-25 11:52:25.615: E/StrictMode(630):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
03-25 11:52:25.615: E/StrictMode(630):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
03-25 11:52:25.615: E/StrictMode(630):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
03-25 11:52:25.615: E/StrictMode(630):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
03-25 11:52:25.615: E/StrictMode(630):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
03-25 11:52:25.615: E/StrictMode(630):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
03-25 11:52:25.615: E/StrictMode(630):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-25 11:52:25.615: E/StrictMode(630):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
03-25 11:52:25.615: E/StrictMode(630):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
03-25 11:52:25.615: E/StrictMode(630):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
03-25 11:52:25.615: E/StrictMode(630):  at java.lang.Thread.run(Thread.java:856)
03-25 11:52:25.615: W/ActivityManager(274): Unbind failed: could not find connection for android.os.BinderProxy@41649e50

我没有得到可能是什么错误。我的模拟器在其他应用程序上运行良好。我正在使用Android API 4.2(17)

对此的任何帮助表示赞赏。

编辑 1

下面是我的代码,包含一个活动。

package com.example.myhapisample;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

import java.io.IOException;

import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.HapiContext;
import ca.uhn.hl7v2.model.Message;


import ca.uhn.hl7v2.parser.EncodingNotSupportedException;
import ca.uhn.hl7v2.parser.Parser;

import ca.uhn.hl7v2.model.v24.message.ADT_A01;
import ca.uhn.hl7v2.model.v24.segment.MSH;
import ca.uhn.hl7v2.model.v24.segment.PID;
import ca.uhn.hl7v2.model.v24.segment.PV1;
import ca.uhn.hl7v2.model.v24.segment.PV2;
import ca.uhn.hl7v2.model.v24.segment.NK1;
import ca.uhn.hl7v2.model.v24.segment.OBX;
import ca.uhn.hl7v2.model.v24.datatype.PN;
import ca.uhn.hl7v2.model.v24.datatype.XPN;

public class MyHapiSampleActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_hapi_sample);

    System.out.println("HapiSample App screen launched");
     Button ParseMsgbutton=(Button)findViewById(R.id.button1);

     Button GenerateMsgbutton=(Button)findViewById(R.id.button2);

        ParseMsgbutton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {



             String msg = "MSH|^~\\&|HIS|RIH|EKG|EKG|199904140038||ADT^A01||P|2.2\r"
                          + "PID|0001|00009874|00001122|A00977|SMITH^JOHN^M|MOM|19581119|F|NOTREAL^LINDA^M|C|564 SPRING ST^^NEEDHAM^MA^02494^US|0002|(818)565-1551|(425)828-3344|E|S|C|0000444444|252-00-4414||||SA|||SA||||NONE|V1|0001|I|D.ER^50A^M110^01|ER|P00055|11B^M011^02|070615^BATMAN^GEORGE^L|555888^NOTREAL^BOB^K^DR^MD|777889^NOTREAL^SAM^T^DR^MD^PHD|ER|D.WT^1A^M010^01|||ER|AMB|02|070615^NOTREAL^BILL^L|ER|000001916994|D||||||||||||||||GDD|WA|NORM|02|O|02|E.IN^02D^M090^01|E.IN^01D^M080^01|199904072124|199904101200|199904101200||||5555112333|||666097^NOTREAL^MANNY^P\r"
                        + "NK1|0222555|NOTREAL^JAMES^R|FA|STREET^OTHER STREET^CITY^ST^55566|(222)111-3333|(888)999-0000|||||||ORGANIZATION\r"
                        + "PV1|0001|I|D.ER^1F^M950^01|ER|P000998|11B^M011^02|070615^BATMAN^GEORGE^L|555888^OKNEL^BOB^K^DR^MD|777889^NOTREAL^SAM^T^DR^MD^PHD|ER|D.WT^1A^M010^01|||ER|AMB|02|070615^VOICE^BILL^L|ER|000001916994|D||||||||||||||||GDD|WA|NORM|02|O|02|E.IN^02D^M090^01|E.IN^01D^M080^01|199904072124|199904101200|||||5555112333|||666097^DNOTREAL^MANNY^P\r"
                         + "PV2|||0112^TESTING|55555^PATIENT IS NORMAL|NONE|||19990225|19990226|1|1|TESTING|555888^NOTREAL^BOB^K^DR^MD||||||||||PROD^003^099|02|ER||NONE|19990225|19990223|19990316|NONE\r"
                          + "AL1||SEV|001^POLLEN\r"
                        + "GT1||0222PL|NOTREAL^BOB^B||STREET^OTHER STREET^CITY^ST^77787|(444)999-3333|(222)777-5555||||MO|111-33-5555||||NOTREAL GILL N|STREET^OTHER STREET^CITY^ST^99999|(111)222-3333\r"
                         + "IN1||022254P|4558PD|BLUE CROSS|STREET^OTHER STREET^CITY^ST^00990||(333)333-6666||221K|LENIX|||19980515|19990515|||PATIENT01 TEST D||||||||||||||||||02LL|022LP554";


                  * The HapiContext holds all configuration and provides factory methods for obtaining
                 * all sorts of HAPI objects, e.g. parsers. 

                   HapiContext context = new DefaultHapiContext();
                   System.out.println("HapiSample App Hapi Context created");

                  * A Parser is used to convert between string representations of messages and instances of
                * HAPI's "Message" object. In this case, we are using a "GenericParser", which is able to
                * handle both XML and ER7 (pipe & hat) encodings.

                  Parser p = context.getGenericParser();

                         Message hapiMsg;
                    try {
                        // The parse method performs the actual parsing
                        hapiMsg = p.parse(msg);
               } catch (EncodingNotSupportedException e) {
                          e.printStackTrace();
                        return;
                     } catch (HL7Exception e) {
                     e.printStackTrace();
                       return;
                     }


                     * This message was an ADT^A01 is an HL7 data type consisting of several components1, so we
                           * will cast it as such. The ADT_A01 class extends from Message, providing specialized
                          * accessors for ADT^A01's segments.
                          * 
                           * HAPI provides several versions of the ADT_A01 class, each in a different package (note
                           * the import statement above) corresponding to the HL7 version for the message.

                          ADT_A01 adtMsg = (ADT_A01)hapiMsg;

                     MSH msh = adtMsg.getMSH();

                    // Retrieve some data from the MSH segment
                         String msgType = msh.getMessageType().getMessageType().getValue();
                  String msgTrigger = msh.getMessageType().getTriggerEvent().getValue();
                  Log.e("Upto this working fine", "HL7 Message parsed properly");
                        // Prints "ADT A01"
                         System.out.println(msgType + " " + msgTrigger);


                          * Now let's retrieve the patient's name from the parsed message. 
                      * 
                          * PN is an HL7 data type consisting of several components, such as 
                     * family name, given name, etc. 

                         //XPN patientName = adtMsg.getPID().getPatientName();
                         //String obxObs=adtMsg.getOBX().getObservationValue().toString();
                         //System.out.println(obxObs);

                         // Prints "SMITH"
                       // String familyName = patientName.getFamilyName().getValue();
                       // System.out.println(familyName);


        }
    });

     GenerateMsgbutton.setOnClickListener(new View.OnClickListener() {

         public void onClick(View view){

             generateHL7Message();

         }
     });

}
@Override

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_my_hapi_sample, menu);
    return true;
}

void generateHL7Message(){
    try{
    ADT_A01 adt = new ADT_A01();
    adt.initQuickstart("ADT", "A01", "P");

// Populate the MSH Segment
  MSH mshSegment = adt.getMSH();
  mshSegment.getSendingApplication().getNamespaceID().setValue("TestSendingSystem");
    mshSegment.getSequenceNumber().setValue("123");

    // Populate the PID Segment
PID pid = adt.getPID(); 
pid.getPatientName(0).getFamilyName().getSurname().setValue("Miki");
pid.getPatientName(0).getGivenName().setValue("Daniel");
   pid.getPatientIdentifierList(0).getID().setValue("123456");
pid.getPid23_BirthPlace().setValue("Ontario");

PV1 pv1=adt.getPV1();
pv1.getAdmissionType().setValue("Above normal");
pv1.getPatientClass().setValue("E");
pv1.getPatientType().setValue("Old Patient");   
pv1.getBedStatus().setValue("Occupied");
pv1.getDietType().getIdentifier().setValue("1");
pv1.getDietType().getText().setValue("Prescription");
pv1.getDietType().getCe3_NameOfCodingSystem().setValue("Internal");

PV2 pv2=adt.getPV2();
pv2.getAdmitReason().getIdentifier().setValue("P01");
pv2.getAdmitReason().getCe2_Text().setValue("Treatment");
pv2.getVisitDescription().setValue("FirstVisitToClinic");
pv2.getPreviousTreatmentDate().setYearMonthDayPrecision(2004, 11, 6);
pv2.getPatientConditionCode().getIdentifier().setValue("1");
pv2.getPatientConditionCode().getCe2_Text().setValue("Improving");
pv2.getPatientStatusEffectiveDate().setValue("");
pv2.getModeOfArrivalCode().getCe1_Identifier().setValue("67709");
pv2.getModeOfArrivalCode().getCe2_Text().setValue("ambulance");

NK1 nk1=adt.getNK1();
nk1.getNk127_Nationality().getCe2_Text().setValue("Indian");
nk1.getRelationship().getIdentifier().setValue("1");
nk1.getRelationship().getText().setValue("Brother");

OBX obx=adt.getOBX();
   obx.getDateTimeOfTheAnalysis().getTimeOfAnEvent().setDateMinutePrecision(2013,02,11,9,36);
obx.getObx3_ObservationIdentifier().getCe1_Identifier().setValue("1");
obx.getObx3_ObservationIdentifier().getText().setValue("Blood Pressure");
obx.getObx3_ObservationIdentifier().getAlternateText().setValue("Normal");
obx.getObx11_ObservationResultStatus().setValue("Result updated");
 /*
        * In a real situation, of course, many more segments and fields would be  populated
     */

// Now, let's encode the message and look at the output
 HapiContext context = new DefaultHapiContext();
    Parser parser = context.getPipeParser();
 String encodedMessage = parser.encode(adt);
 System.out.println("Printing HL7 Encoded Message:\n\n\n");
 System.out.println(encodedMessage);
 String outputHL7="\n\n\n\n\n\n"+encodedMessage;
    }
     catch(HL7Exception ex){
         Log.e("HL7 error", "HL7 exception");
     } 
     catch(IOException e){
         Log.e("IOException error", "msg");
     }
    }
}

我正在使用 HAPI 库提供的几个 jar 来解析和生成 HL7 数据。之前应用程序在模拟器中运行良好,这些 jar 带有一个按钮和setOnClickListener. 但是在添加另一个按钮及其setOnClickListener方法后,我遇到了错误。

我对这个错误的到来一无所知。

请帮忙。

4

2 回答 2

2

adb kill-server当我执行并重新创建我的设备模拟器时,这个问题得到了解决。我 adb start-server还不得不洗牌一些我用于我的应用程序的第三方 jars。我认为这个错误与 android 模拟器的内存泄漏有关运行。

于 2013-03-29T06:05:12.280 回答
0

HAPI我没有看到与您得到的错误之间的关系,但由于generateHL7Message()方法捕获了一个IOException,它可能正在尝试做一些与网络相关的事情。禁止主线程上的网络连接。您可以尝试AsyncTask按顺序处理网络事物并在onPostExecute方法上进行 GUI 更新。

于 2013-03-30T11:35:46.587 回答