2017-04-07 2 views
3

5 개의 다른 휴대폰에 apk를 설치하려고하면 그 중 하나가 패닉 상태입니다. 나머지 4 개는 잘 작동합니다. 다음 오류 정보는 다음과 같습니다하나의 특정 전화기에 apk를 설치할 수 없습니다.

  1. android.content.pm.PackageParser $ PackageParserException : getDeviceId : 둘 다 사용자 10,071도 현재 프로세스는 android.permission이 없습니다

  2. 는이 java.lang.SecurityException 자산 경로를 추가 실패

    04-07 12:10:06.788 9371-9371/? W/zipro: Error opening archive /storage/6365-3066/Download/qqmail/ISCAN-debug.apk: Invalid file 
    04-07 12:10:06.789 9371-9371/? E/PackageUtil: can not parse packag 
                  android.content.pm.PackageParser$PackageParserException: Failed adding asset path: /storage/6365-3066/Download/qqmail/ISCAN-debug.apk 
                   at android.content.pm.PackageParser.loadApkIntoAssetManager(PackageParser.java:898) 
                   at android.content.pm.PackageParser.parseBaseApk(PackageParser.java:926) 
                   at android.content.pm.PackageParser.parseMonolithicPackage(PackageParser.java:874) 
                   at android.content.pm.PackageParser.parseMonolithicPackage(PackageParser.java:855) 
                   at com.android.packageinstaller.PackageUtil.getPackageInfo(PackageUtil.java:79) 
                   at com.android.packageinstaller.PackageInstallerActivity.onCreate(PackageInstallerActivity.java:728) 
                   at android.app.Activity.performCreate(Activity.java:6367) 
                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504) 
                   at android.app.ActivityThread.access$900(ActivityThread.java:165) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:150) 
                   at android.app.ActivityThread.main(ActivityThread.java:5546) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:682) 
    04-07 12:10:06.789 9371-9371/? W/PackageInstaller: Parse error when parsing manifest. Discontinuing installation 
    04-07 12:10:06.794 3635-3635/? I/WindowBlurViewManager: allowChangeBlurBackground 
    04-07 12:10:06.818 4402-4163/? W/System.err: java.lang.SecurityException: getDeviceId: Neither user 10071 nor current process has android.permission.READ_PHONE_STATE. 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at android.app.ContextImpl.enforce(ContextImpl.java:1595) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1627) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:675) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:675) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at com.android.internal.telephony.HwPhoneService.canReadPhoneState(HwPhoneService.java:969) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at com.android.internal.telephony.HwPhoneService.getUniqueDeviceId(HwPhoneService.java:984) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at com.android.internal.telephony.IHwTelephony$Stub.onTransact(IHwTelephony.java:364) 
    04-07 12:10:06.818 4402-4163/? W/System.err:  at android.os.Binder.execTransact(Binder.java:453) 
    04-07 12:10:06.819 9371-9392/? W/System.err: java.lang.SecurityException: getDeviceId: Neither user 10071 nor current process has android.permission.READ_PHONE_STATE. 
    04-07 12:10:06.819 9371-9392/? W/System.err:  at android.os.Parcel.readException(Parcel.java:1602) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.os.Parcel.readException(Parcel.java:1555) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at com.android.internal.telephony.IHwTelephony$Stub$Proxy.getUniqueDeviceId(IHwTelephony.java:1297) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.telephony.HwTelephonyManagerInner.getUniqueDeviceId(HwTelephonyManagerInner.java:843) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.telephony.HwInnerTelephonyManagerImpl.getUniqueDeviceId(HwInnerTelephonyManagerImpl.java:340) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:723) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at com.hianalytics.android.v1.e.a(Unknown Source) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at com.hianalytics.android.v1.e.run(Unknown Source) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.os.Handler.handleCallback(Handler.java:743) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.os.Looper.loop(Looper.java:150) 
    04-07 12:10:06.820 9371-9392/? W/System.err:  at android.os.HandlerThread.run(HandlerThread.java:61) 
    
    : .READ_PHONE_STATE

    여기

상세한 오류라고 0

그 전화에서만 왜 일어나는 지 아십니까? 그것을 고치는 방법? 고맙습니다.

+0

그 전화는 무엇입니까 ?? –

+0

@JimitPatel HUAWEI Mate 8, android 6.0 – Rangtian

+0

생성 된 apk는 테스트 apk 또는 서명 된 (출시) apk입니까? –

답변

0

04-07 12:10:06.788 9371-9371/? W/zipro: Error opening archive /storage/6365-3066/Download/qqmail/ISCAN-debug.apk: Invalid file

이것은 문제입니다. 파일이 너무 작고, 너무 크거나 수 없습니다 때문에

  • 아카이브 (APK 파일)을 메모리에 매핑 할 수 없습니다

    Android source에 따르면, kInvalidFile의 리턴 코드는 장소의 몇보고 액세스 할 수 있습니다.

  • APK 파일의 EOCD (End of Central Directory) 데이터에 문제가 있습니다.

내 생각에 그 /storage/... 위치에있는 APK에 액세스하는 데 문제가 있습니다. APK를 일반 Android 임시 디렉토리 (/data/local/tmp/)로 이동해보세요.

APK 자체 또는 일부 다른 소프트웨어 (바이러스 백신, 맬웨어 방지 프로그램 등)의 손상으로 파일 액세스가 중지됩니다.

ActivityCompat.requestPermissions(MainActivity.this, 
      new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.READ_PHONE_STATE}, 
      1); 

을하거나 한 OnCreate에서이 같이 사용할 수 :

어쩌면 유 마시 멜로에 대한 checkself 권한을 부여하지 않기 때문이다
+0

안녕하세요, adelphus, 다른 dir로 apk를 복사하려고했지만 여전히 작동하지 않습니다. 그러나, 나는 빌드하고 그 전화에 USB 케이블을 통해 응용 프로그램을 설치할 수 있습니다. 시스템이 HUAWEI의 주문형 마시맬로이기 때문에 파일에 접근 할 수있는 충분한 권한이없는 것 같습니다. – Rangtian

+0

apk의 크기는 8.4Mb로 너무 크거나 작지 않습니다. 그러나 여전히, 어떻게이 문제를 해결할 수 있습니까? – Rangtian

+0

@Rangtian 어떻게 앱을 설치 하시겠습니까? 파일이 장치의 위치에 복사되었지만 설치를 시작하는 방법은 무엇입니까? – adelphus

0

... 이것을 시도

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
      if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){ 
       requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},100); 
       return; 
      } 
     } 

다음이 방법을 사용 :

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    if(requestCode == 100 && (grantResults[0] == PackageManager.PERMISSION_GRANTED)){ 
     pick_file(); 
    }else { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},100); 
     } 
    } 
} 
+0

시간 내 주셔서 감사합니다 : D 해봅시다. – Rangtian

관련 문제