小编san*_*nti的帖子

Android Marshmallow,api 23,在Cordova应用程序上打破了权限

我继承了一个Cordova混合应用程序,其清单文件中有错误.targetSdkVersion设置为24,就我而言尚不存在.

该应用未在Android 6设备上进行测试,因此上传到Play商店时出现该错误.由于Android 6上的权限模型已更改了这些设备上的应用程序崩溃.

03-12 21:10:05.991  24366-24475/? E/PluginManager? Uncaught exception from plugin
    java.lang.SecurityException: getDeviceId: Neither user 10111 nor current process has android.permission.READ_PHONE_STATE.
            at android.os.Parcel.readException(Parcel.java:1620)
            at android.os.Parcel.readException(Parcel.java:1573)
            at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:4207)
            at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:706)
            at org.pgsqlite.SQLitePlugin.getAppKey(SQLitePlugin.java:783)
            at org.pgsqlite.SQLitePlugin.executeSqlBatch(SQLitePlugin.java:347)
            at org.pgsqlite.SQLitePlugin.executeAndPossiblyThrow(SQLitePlugin.java:195)
            at org.pgsqlite.SQLitePlugin.execute(SQLitePlugin.java:93)
            at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:95)
            at org.apache.cordova.PluginManager.exec(PluginManager.java:130)
            at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
            at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
            at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
            at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
Run Code Online (Sandbox Code Playgroud)

感谢这个博客,我发现如果我将targetSdkVersion更改为22,则应用程序的工作方式与以前一样 http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/EN

和文档演示了如何在运行时问权限: http://developer.android.com/intl/es/training/permissions/requesting.html

关于这个问题,我有几个问题.

  1. 如果我将targetSdkVersion降级为22(或23)并将应用程序上传到Play商店,如果我增加版本,应用会更新吗?我真的不知道会发生什么.
  2. 我应该如何使用Cordova应用程序上的Android Marshmallow权限?我是否应该要求在安装后覆盖Cordova创建的默认活动的活动?
  3. 还有其他想法可以解决这个问题吗?

这是我的manifest.xml文件.

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0" android:windowSoftInputMode="adjustResize" package="com.myorg.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" …
Run Code Online (Sandbox Code Playgroud)

permissions android cordova android-6.0-marshmallow

2
推荐指数
1
解决办法
5174
查看次数