FileNotFoundException异常:AndroidManifest.xml中 [英] FileNotFoundException : AndroidManifest.xml

查看:2474
本文介绍了FileNotFoundException异常:AndroidManifest.xml中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

即时通讯目前工作的一个项目,将检查是否有一定的.apk文件仅在设备上安装。如果是安装一个按钮,点击后会打开该应用程序。现在,我的问题是阅读的apk文件,因为我可以在打开的包名。我在这里看到的片段如何阅读。

Im currently working on a project that will check if a certain .apk file is only installed on the device. If it is install, a button, when clicked, will open that application. now, my problem is reading the package name of the .apk for i can open in. i have seen a snippet here on how to read it.

String apkPath = Environment.getExternalStorageDirectory()+ "/KiddieJam/Apps" + file_name;
                    System.out.println(apkPath);
                     PackageManager pm = getPackageManager();

                     PackageInfo info = pm.getPackageArchiveInfo(apkPath, 
                                            PackageManager.GET_ACTIVITIES);
                     Log.i("ActivityInfo", "Package name is " + info.packageName);

我敢肯定,其对其他正常工作,可能也用它,但有一个问题,IM和我说logcat中FileNotFoundException异常:AndroidManifest.xml中

Im sure its working properly on other that might have used it also, but im having a problem and my logcat says FileNotFoundException : AndroidManifest.xml

W / PackageParser(13839):无法读取/mnt/sdcard/KiddieJam/Apps/Guitar_Hero_6_Apk.apk的Andr​​oidManifest.xml中
  / PackageParser(13839):java.io.FileNotFoundException:AndroidManifest.xml中
  W / PackageParser(13839):在android.content.res.AssetManager.openXmlAssetNative(本机方法)
  W / PackageParser(13839):在android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:486)
  W / PackageParser(13839):在android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:454)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.content.pm.PackageParser.parsePackage(PackageParser.java:401)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.content.pm.PackageManager.getPackageArchiveInfo(PackageManager.java:1889)
  二月五日至八日:33:24.966:W / PackageParser(13839):在.ContentDetails.onCreate(ContentDetails.java:329)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.os.Handler.dispatchMessage(Handler.java:99)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.os.Looper.loop(Looper.java:123)
  二月五日至八日:33:24.966:W / PackageParser(13839):在android.app.ActivityThread.main(ActivityThread.java:3683)
  二月五日至八日:33:24.966:W / PackageParser(13839):在java.lang.reflect.Method.invokeNative(本机方法)
  二月五日至八日:33:24.966:W / PackageParser(13839):在java.lang.reflect.Method.invoke(Method.java:507)
  二月五日至八日:33:24.966:W / PackageParser(13839):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
  二月五日至八日:33:24.966:W / PackageParser(13839):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  二月五日至八日:33:24.966:W / PackageParser(13839):在dalvik.system.NativeStart.main(本机方法)

W/PackageParser(13839): Unable to read AndroidManifest.xml of /mnt/sdcard/KiddieJam/Apps/Guitar_Hero_6_Apk.apk /PackageParser(13839): java.io.FileNotFoundException: AndroidManifest.xml W/PackageParser(13839): at android.content.res.AssetManager.openXmlAssetNative(Native Method) W/PackageParser(13839): at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:486) W/PackageParser(13839): at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:454) 05-08 02:33:24.966: W/PackageParser(13839): at android.content.pm.PackageParser.parsePackage(PackageParser.java:401) 05-08 02:33:24.966: W/PackageParser(13839): at android.content.pm.PackageManager.getPackageArchiveInfo(PackageManager.java:1889) 05-08 02:33:24.966: W/PackageParser(13839): at .ContentDetails.onCreate(ContentDetails.java:329) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 05-08 02:33:24.966: W/PackageParser(13839): at android.os.Handler.dispatchMessage(Handler.java:99) 05-08 02:33:24.966: W/PackageParser(13839): at android.os.Looper.loop(Looper.java:123) 05-08 02:33:24.966: W/PackageParser(13839): at android.app.ActivityThread.main(ActivityThread.java:3683) 05-08 02:33:24.966: W/PackageParser(13839): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 02:33:24.966: W/PackageParser(13839): at java.lang.reflect.Method.invoke(Method.java:507) 05-08 02:33:24.966: W/PackageParser(13839): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 05-08 02:33:24.966: W/PackageParser(13839): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 05-08 02:33:24.966: W/PackageParser(13839): at dalvik.system.NativeStart.main(Native Method)

该.apk文件驻留在正确的道路上。我只是.apk文件仅用于测试目的。
任何帮助将AP preciated。谢谢!

The .apk file resides on the correct path. I just that .apk for testing purposes only. any help will be appreciated. thanks!

推荐答案

也许,这是由于外部的存储隔离...

Maybe, it is due to "external" storage isolation...

的Andr​​oidManifest.xml ,包括:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

例如,在某处 MyApp.java

String PACKAGE_NAME = MyApp.class.getPackage().getName(); 
String KEY_DIRECTORY_SELECTED = PACKAGE_NAME + ".DIRECTORY_SELECTED";    

SharedPreference prefs = getSharedPreferences(PACKAGE_NAME, Context.MODE_PRIVATE);

String apkPath = prefs.getString(KEY_DIRECTORY_SELECTED,
    Environment.getExternalStorageDirectory().toString()) + "/KiddieJam/Apps/" + file_name;

System.out.println(apkPath.trim());

PackageManager pm = getPackageManager();

PackageInfo info = pm.getPackageArchiveInfo(apkPath.trim(),PackageManager.GET_ACTIVITIES);

Log.i("ActivityInfo", "Package name is " + info.packageName);

在另一方面,我可能会怀疑你已经忘记了文件分隔到单独的文件名: / KiddieJam /应用。它应该是 / KiddieJam /应用/

On the other hand, I may suspect you have forgotten the file separator to separate the filename: /KiddieJam/Apps. It should be /KiddieJam/Apps/

这篇关于FileNotFoundException异常:AndroidManifest.xml中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆