标签: android-6.0-marshmallow

Android getAllNetworkInfo()已弃用.有什么选择?

我想使用连接管理器,它提供方法getAllNetworkInfo()来检查Android中的网络可用性.此方法在API级别23中已弃用.而Developer doc建议使用getAllNetworks().我试过但是没有得到我从旧代码中获得的确切功能.请有人指导我如何使用getAllNetworks()方法.以下是我正在使用的代码:

 public boolean isConnectingToInternet(){
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null) 
      {
          @SuppressWarnings("deprecation")
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
          //use getAllNetworks() instead
          if (info != null) 
              for (int i = 0; i < info.length; i++) 
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }
      }
      return false;
}
Run Code Online (Sandbox Code Playgroud)

networking android android-6.0-marshmallow

27
推荐指数
3
解决办法
3万
查看次数

Android 6.0对话框文本不会出现

我将手机更新到Android 6.0,我有两个对话框问题:

1)显示标题,但消息不用于警告对话框(已解决):

        new AlertDialog.Builder(context).setTitle("Title").setMessage("Message");
Run Code Online (Sandbox Code Playgroud)

2)也没有显示自定义对话框片段的标题(未解决):

        getDialog().setTitle("Title");
Run Code Online (Sandbox Code Playgroud)

在棒棒糖或旧版本中没有这样的问题,只有在将手机更新为棉花糖后才出现问题.

如何解决问题?

android android-alertdialog android-dialog android-dialogfragment android-6.0-marshmallow

27
推荐指数
6
解决办法
2万
查看次数

Android - 从PDU弃用的API创建SMS?

我想创建一个应用程序,当SMS到达并处理该SMS时收到通知,但是读取createFromPdu函数的引用,它声明:

这个方法很快就会被弃用,所有通过处理SMS_RECEIVED_ACTION广播意图来处理传入SMS消息的应用程序现在必须将新格式String extra从intent传递给新方法createFromPdu(byte [],String),这需要额外的格式参数.这是为了在需要同时支持3GPP和3GPP2格式的设备上正确解码PDU所需的,例如双模GSM/CDMA和CDMA/LTE电话.

但是createFromPdu(byte[], String)文档和SDK都缺少该功能.

我该怎么办?我需要支持这些双卡双待手机.

sms android deprecated android-6.0-marshmallow

26
推荐指数
3
解决办法
2万
查看次数

Android:更新到SDK 23后的java.land.NoSuchFieldError

我更新到SDK 23并将gradle.build更新为API 23,支持库到23.0.0等,现在我在尝试运行应用程序时遇到以下错误(编译得很好).

java.lang.NoSuchFieldError: No instance field mFragments of type Landroid/support/v4/app/FragmentManagerImpl; in class Landroid/support/v4/app/Watson; or its superclasses (declaration of 'android.support.v4.app.Watson' appears in /data/app/com.my.app-1/base.apk)
            at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:50)
            at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:560)
            at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:64)
            at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:164)
            at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:548)
            at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:917)
            at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:258)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)

我恢复了所有内容的API 22,仍然得到错误.

android android-support-library android-6.0-marshmallow

26
推荐指数
3
解决办法
1万
查看次数

是否可以在最低SDK <23时设置checkSelfPermission?

Android-M中的新运行时权限要求最低23个API级别,但我的项目中仍需要最低16个API级别.

在此输入图像描述

那么,如何使这个代码更向前兼容?

问候

android android-6.0-marshmallow

26
推荐指数
2
解决办法
3万
查看次数

如何管理运行时权限android marshmallow espresso测试

我正在使用浓缩咖啡进行测试,但有时我会尝试从外部存储中获取图像,并且使用棉花糖我需要运行时权限,否则会出现异常崩溃并且测试将失败.

androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // this library uses the newest app compat v22 but the espresso contrib still v21.
    // you have to specifically exclude the older versions of the contrib library or
    // there will be some conflicts
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.squareup.retrofit:retrofit-mock:1.9.0'
androidTestCompile 'com.squareup.assertj:assertj-android:1.1.0'
androidTestCompile 'com.squareup.spoon:spoon-client:1.2.0'
Run Code Online (Sandbox Code Playgroud)

我该如何管理呢?

我应该为运行时权限编写测试,还是有办法禁用它进行测试?

在测试运行之前,我应该像她在这里说的那样给出权限吗?https://www.youtube.com/watch?list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM&v=C8lUdPVSzDk

android android-espresso android-6.0-marshmallow

26
推荐指数
6
解决办法
2万
查看次数

调用需要API级别23(当前最小值为14):android.app.Activity#requestPermissions,checkSelfPermission

我正在尝试添加运行时权限android(6.0.1)API 23,如果我使用SDK版本(min和目标版本都是23)它就好了,如下所示,

    <uses-sdk
                android:minSdkVersion="23"
                android:targetSdkVersion="23" />
Run Code Online (Sandbox Code Playgroud)

如果我改变android:minSdkVersion(少于23)

例如:

我收到以下错误:

调用需要API级别23(当前最小值为14):android.app.Activity#requestPermissions,checkSelfPermission

对于以下2种方法,

1)requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS)

2)checkSelfPermission(permission)
Run Code Online (Sandbox Code Playgroud)

我试过了ActivityCompat.checkSelfPermission(),ContextCompat.checkSelfPermission()两个都没有用.

我遗失的东西无法理解..

android android-permissions android-support-library android-6.0-marshmallow

26
推荐指数
4
解决办法
6万
查看次数

在仿真设备上测试辅助功能(棉花糖)

我想在模拟器中测试我的应用程序的可访问性(特别是Talkback),但似乎模拟器中缺少该选项.以下是可访问性设置中模拟器的屏幕截图:

在此输入图像描述

有两个选项"ClockBack""QueryBack"我不能我的手机上使用相同的Android版本发现.以下是我手机辅助功能设置的屏幕截图:

在此输入图像描述

我搜索了解"ClockBack""QueryBack"了解它们是否是Talkback模拟器的替代品,但我找不到任何东西.

有谁知道"ClockBack"和的功能是"QueryBack"什么?还有更多关于如何Talkback在模拟器中启用?

android android-emulator talkback android-6.0-marshmallow

26
推荐指数
3
解决办法
8326
查看次数

如何在Android Marshmallow中获取Chrome历史记录和书签(API> = 23)?

直到API级别22(即直到Lollipop),有一种方法可以使用权限从Chrome应用程序中读取历史记录和书签(如此主题中所示)com.android.browser.permission.READ_HISTORY_BOOKMARKS.

现在,在Android API = 23 Marshmallow中,由于整个浏览器书签系统已在Marshmallow中删除(此处更改),因此上述方法不再起作用.

这是一个线程,显示了为什么这不再可能.

在我的研究中,到目前为止,我还没有找到好消息.谷歌确实杀死了系统书签功能(此处此处),问题是Chrome浏览器是否会以任何方式公开它?

在Android Marshmallow中,有没有替代/方式来阅读Chrome中的书签和历史记录(甚至Chrome特定的答案会回答这个问题)?

android google-chrome browser-history android-browser android-6.0-marshmallow

25
推荐指数
1
解决办法
9649
查看次数

替换呼叫应用程序

背景

我正在尝试开发一个非常简单的通话应用程序来替换库存版本.基本上,我只想回答来电并向用户展示一个非常简单的自定义UI.不需要拨出电话或任何花哨的东西.

在网上搜索我找到了包android.telecom.incallservice(在API 23中提供).此服务由希望提供用于管理电话呼叫的用户界面的任何应用程序实现.

这似乎很有希望,但我无法让它工作.我已经创建了扩展InCallService的简单服务,并在文档描述的清单中声明它.但是,我希望能够将设置中的默认手机应用程序更改为我自己的,但我只能找到手机应用程序.

这是文档的清单声明.我已经替换了BIND_IN_CALL_SERVICE,BIND_INCALL_SERVICE因为我猜这是一个错字.

<service android:name="your.package.YourInCallServiceImplementation" android:permission="android.permission.BIND_INCALL_SERVICE">
    <meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
    <intent-filter>
        <action android:name="android.telecom.InCallService"/>
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

问题

  1. 是否有可能第三方应用程序替换调用应用程序中的默认值?

  2. 是否有任何使用此API的示例实现我可以用作参考?我找到了谷歌实现,但这是一个系统应用程序,它利用了一些其他应用程序无法使用的权限(例如:)android.permission.MODIFY_PHONE_STATE.

  3. 我是否正确假设在提供正确的InCallService清单注册和存根实现后,我可以期待找到我的应用程序Default Apps -> Phone?我需要申报其他东西吗?

谢谢.

android android-6.0-marshmallow

25
推荐指数
1
解决办法
5565
查看次数