小编Hen*_*nry的帖子

`shouldOverrideUrlLoading`真的被弃用了吗?我可以用什么呢?

"shouldOverrideUrlLoading"真的被弃用了吗?如果是这样,我可以使用什么呢?

似乎shouldOverrideUrlLoading已经弃用了针对Android N的应用程序,我需要让应用程序自API 19开始工作,直到最新的Android N(测试版),我使用的是Android N中的一些新功能(如Data Saver),因此定位Marshmallow无法解决这个问题,因为我需要使用这些新功能,这是我使用的代码的一部分:

public boolean shouldOverrideUrlLoading(WebView webview, String url) {
    if (url.startsWith("http:") || url.startsWith("https:")) {
        ...
    } else if (url.startsWith("sms:")) {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是Android Studio给我的消息:

覆盖'android.webkit.WebViewClient'中不推荐使用的方法此检查报告在指定的检查范围中使用不推荐的代码的位置.

谷歌没有说这种弃用.

我想知道是否使用@SuppressWarnings("deprecation")将让我在API 19上工作直到最新的Android N Beta(及其发布时的最终版本),我无法自己测试,我从未使用过,我需要确定它有效,所以,任何人都能说出来?

android deprecated webview android-webview deprecation-warning

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

java.lang.IllegalArgumentException:对于requestCode只能使用低16位

我正在编写一个Activity A启动Activity B使用的应用程序

startActivityForResult(intent, -101);
Run Code Online (Sandbox Code Playgroud)

但是在调用时,它会回复以下错误日志:

E/AndroidRuntime( 1708): java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
E/AndroidRuntime( 1708):    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:837)
Run Code Online (Sandbox Code Playgroud)

可能它可能是-101但我不确定.有没有人对此有任何想法?

android start-activity

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

使用Android Studio将html文件从assets文件夹加载到android上的webview

我正在使用Android Studio/Gradle.

app\src\main\android_asset文件夹中有一个名为chart.html的文件.

我正在尝试将此文件加载到我的webview中,如下所示:

WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/chart.html");
setContentView(view);
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误:无法加载因为ERR_FILE_NOT_FOUND.

我在这里错过了什么?

java android webview gradle android-studio

20
推荐指数
2
解决办法
5万
查看次数

如何让工具栏不与Android中的其他内容重叠?

我正在尝试使用工具栏开发一个活动(该示例或多或少取自教程),但工具栏始终与其他内容的一部分重叠.这是一个截图:

在此输入图像描述

蓝色工具栏与其他一些内容重叠.我试图在SO上搜索类似的问题,但只找到了一些无关的东西.我还试图改变一些元素的顺序并替换wrap_content< - > match_parent,这最多会使布局恶化.

我确信我遗漏了一些非常基本的东西,但我看不出是什么.

代码activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity" >

    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"/>

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

代码content_main.xml:

<?xml version="1.0" encoding="utf-8"?>
  <GridLayout
        xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="wrap_content"
        android:layout_height="match_parent"

        android:useDefaultMargins="true"
        android:alignmentMode="alignBounds"
        android:columnOrderPreserved="false"

        android:columnCount="4"
        >

    <TextView
            android:text="@string/MainTitle"
            android:textSize="32dip"
            android:layout_columnSpan="4"
            android:layout_gravity="center_horizontal"
            android:id="@+id/textView1"
            />

    <TextView
            android:text="You can configure email in just a few steps:"
            android:textSize="16dip"

            android:layout_columnSpan="4"
            android:layout_gravity="left"
            />

    <TextView
            android:text="Email address:"

            android:layout_gravity="right"
            />

    <EditText …
Run Code Online (Sandbox Code Playgroud)

android toolbar android-layout android-toolbar

20
推荐指数
4
解决办法
2万
查看次数

Android Bitmap Masking(Xfermode)背后留下不透明的黑色背景

我有一个自定义视图,在onDraw()我,我试图执行位图屏蔽.我有一个squareBitmap(红色)填充整个视图,我有一个circleBitmap(蓝色)充当面具.我正在使用模式:PorterDuff.Mode.DST_IN.

我期待的结果是一个红色的圆圈.我明白了,但我也得到了一个黑色的不透明背景.我不想要这种不透明的背景,而应该是透明的.Figure 1是我得到Figure 2的结果,是我正在寻找的结果.

图1:我得到的结果 图2:我正在寻找的结果

我的代码:( onDraw()为了这个问题,我把所有内容都移到了里面)

protected void onDraw(Canvas canvas) {

    final int width = canvas.getWidth();
    final int height = canvas.getHeight();

    Bitmap circleBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas circleCanvas = new Canvas(circleBitmap);
    Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
    p.setStyle(Paint.Style.FILL_AND_STROKE);
    p.setColor(Color.BLUE);
    circleCanvas.drawCircle(width / 2, height / 2, width / 2, p);

    p.setColor(Color.RED);
    Bitmap squareBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas squareCanvas = new Canvas(squareBitmap);
    final Rect squareRect = new Rect(0, …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-view android-bitmap

11
推荐指数
1
解决办法
4234
查看次数

Android上的Fabric/Crashlytics - 如何使用相同的包名称拥有两个不同的crashlytics项目?

我正在开发一个Android应用程序,我想在Crashlytics/Fabric(调试和发布)中有两个不同的项目.

我知道这可以通过两个不同的包名来实现,但在我的情况下,这两种构建类型的包名必须相同.

是否有可能有两个具有相同包名称的碰撞项目?

android gradle crashlytics twitter-fabric

10
推荐指数
2
解决办法
3605
查看次数

Espresso测试失败:想要匹配1个意图,实际匹配2个意图

我在使用espresso测试活动启动时遇到此错误.

android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError:想要匹配1个意图.实际上匹配了2个意图.

令人惊讶的是,相同代码的其他活动启动测试正在通过.

@RunWith(AndroidJUnit4.class)
public class HomeActivityTest {

  @Rule
  public final IntentsTestRule<HomeActivity> mHomeActivityRule = new IntentsTestRule<HomeActivity>(HomeActivity.class);


  @Test
  public void testFundTransferActivityStarted() {

    onView(withId(R.id.button_fund_transfer)).perform(click());

    intended(hasComponent("mypackage.FundTransferActivity"));
 }

}
Run Code Online (Sandbox Code Playgroud)

按钮单击只需使用startActivity启动FundTransfer活动.

android android-testing android-espresso

9
推荐指数
1
解决办法
2685
查看次数

使用静态var和传递对象参数之间哪一个更好?

我想写一个APP来记录屏幕,有两种方式,RecordHelper_Method_A和RecordHelper_Method_B.

在RecordHelper_Method_A中,我将mMediaRecorder,MediaProjection mMediaProjection和mVirtualDisplay定义为静态var,它很容易调用,例如StartRecord( mContext, requestCode, resultCode,data),StopRecord().

在RecordHelper_Method_B中,我需要在主Activity类中定义mMediaRecorder,MediaProjection mMediaProjection,并在调用时传递参数StartRecord(mMediaRecorder, mMediaProjection,mVirtualDisplay),'StopRecord(mMediaRecorder,mMediaProjection,mVirtualDisplay)`......,这有点复杂.

我不知道哪一个更好,而且当我结束APP时,我不知道是否可以在RecordHelper_Method_A中正确释放这些静态var.

顺便说一句,如果你有更好的方法,请告诉我吗?谢谢!

RecordHelper_Method_A

public class RecordHelper_Method_A {

    private static MediaRecorder mMediaRecorder;
    private static MediaProjection mMediaProjection;
    private static VirtualDisplay mVirtualDisplay;

    public static void StartRecord(Context mContext,int requestCode, int resultCode, Intent data){

        mMediaRecorder = new MediaRecorder();
        initRecorder();

        MediaProjectionManager mProjectionManager = (MediaProjectionManager) mContext.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
        mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);

        mVirtualDisplay=mMediaProjection.createVirtualDisplay("MainActivity",
                400,600, 300,
                DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
                mMediaRecorder.getSurface(), null, null);

        MediaProjectionCallback mMediaProjectionCallback = new MediaProjectionCallback();
        mMediaProjection.registerCallback(mMediaProjectionCallback, null);

        mMediaRecorder.start();
    }

    public static void StopRecord(){
        mMediaProjection=null;
        mMediaRecorder.stop(); …
Run Code Online (Sandbox Code Playgroud)

java android

8
推荐指数
1
解决办法
246
查看次数

为 Java 项目构建 Flavors

Build Flavors 通常通过 android gradle 插件在 Android 应用程序中使用。这允许项目具有目录结构

src
  - main
    - com.stack.A.java
  - debug
    - com.stack.B.java
  - release
    - com.stack.B.java
Run Code Online (Sandbox Code Playgroud)

这只会B.java根据已选择的发布类型编译正确的。

有没有办法在不使用android gradle插件而只使用java插件的情况下镜像这个功能?

java gradle

7
推荐指数
2
解决办法
1486
查看次数

Visual Studio:还原 nuget 包时出错:存在重复的包

当我尝试构建我的解决方案时,我在 Visual Studio 2015 中收到以下错误Error Occurred while restoring nuget packages..... there are duplicate packages....。。因此,我的大部分程序集都references显示了黄色三角形并且没有恢复。

如何解决问题?

nuget-package xamarin visual-studio-2015

5
推荐指数
1
解决办法
5249
查看次数