小编Ezi*_*zio的帖子

如何在通知点击时调用非活动方法

我有一个Java类MyClass,其中包含一个称为的方法callMethod。当用户单击通知时,我想调用此方法

以下是我用于生成通知的代码

public class MainActivity extends AppCompatActivity {

    Button button;
    NotificationManager mNotifyMgr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        mNotifyMgr = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, new Intent(MainActivity.this, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
                Notification notification =
                    new NotificationCompat.Builder(MainActivity.this)
                            .setContentTitle("Notification")
                            .setSmallIcon(R.drawable.ic_launcher)
                            .setContentText("Downloaded")
                            .setContentIntent(pendingIntent)
                            .build();

                mNotifyMgr.notify(1,notification);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

下面是执行 MyClass

public class MyClass {
    public void callMethod(){
        System.out.println("Notification clicked");
    }
}
Run Code Online (Sandbox Code Playgroud)

请帮忙,我暂时陷入了困境

notifications android android-intent android-pendingintent

4
推荐指数
1
解决办法
1863
查看次数

使用正则表达式拆分camelCase字符串

我有一个像这样的Camel案例字符串s = 'ThisIsASampleString',我想使用大写字母作为分隔点拆分成一个数组.我期待这个:

['This', 'Is', 'A', 'Sample', 'String']
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的

s = "ThisIsASampleString";
var regex = new RegExp('[A-Z]',"g");
var arr = s.split(re);
Run Code Online (Sandbox Code Playgroud)

但这并没有给我正确的结果,因为它删除了匹配的字符.我得到这个数组作为我的结果["his", "s", "", "tring"].它删除了所有匹配的大写字母.

我应该如何避免这种行为并将匹配的字符保留在我的结果数组中?

javascript regex string split camelcasing

4
推荐指数
1
解决办法
884
查看次数

对 Android Activity 中的方法进行单元测试

我不知道是否有人回答,我发现了一些类似的问题,但这些答案对我来说没有任何意义。所以,我又来问了。

我们如何测试活动内部的方法。

public class MyActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       //inflate layout        
   }

   public int someMethod() {
       //perform some logic and return an integer
   }

}
Run Code Online (Sandbox Code Playgroud)

我想对该方法进行单元测试,someMethod但是我该怎么做,因为我无法创建活动的实例并直接调用该方法。被测方法不使用任何 android 组件,所以我不想使用 Roboelectric 或任何其他此类库或工具。这是一个普通的java方法。

我知道的一种方法是将方法移到另一个类并对该类进行单元测试,我对此非常满意,但我想知道这是否是正确的方法(为此目的创建一个单独的类),或者有没有其他方法可以做到?

感谢您的任何反馈。

java android unit-testing

4
推荐指数
1
解决办法
1980
查看次数

最新版本的Glide给出依赖性错误

我已将Glide的版本从4.0.0-RC0升级到4.4.0.但它给我一个错误的说法

Error:Module 'com.github.bumptech.glide:glide:4.4.0' depends on one or more Android Libraries but is a jar
Run Code Online (Sandbox Code Playgroud)

它不是说哪个罐子或任何其他信息.有人知道如何解决这个问题吗?我还在build.gradle中附加了Glide的条目

compile 'com.github.bumptech.glide:glide:4.4.0'
compile 'com.github.bumptech.glide:okhttp3-integration:4.4.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0'
compile 'com.github.bumptech.glide:annotations:4.4.0'
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用支持库版本27.0.1

android gradle android-glide

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

Android 应用程序不可调试风格的 Charles 代理

首先让我澄清一下,我知道这是一个非常糟糕的做法,我不会将此更改推送到我的生产代码中。但有时我们需要调试我的应用程序的不可调试风格的一些更改,但所有 https url 都失败并出现以下错误

Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)

我已使用以下网络配置文件并添加到我的清单文件中。这在应用程序的可调试风格中工作,但在不可调试风格中仍然不起作用。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用 charles 在 Android 应用程序的不可调试风格中监视我的网络调用吗?

android network-monitoring charles-proxy

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

在 Roboelectric 单元测试中忽略 firebase 相关异常

当我尝试在 Application 类中初始化 Firebase 时,我的 Roboelectric 单元测试给出了此异常。

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first.

有什么方法可以忽略这个异常并让我的测试通过吗?

android unit-testing robolectric

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

在Android中使用Glide加载图像

我正在尝试使用glide将URL中的图像加载到我的imageview中,但是它不起作用。我无法下载并显示图像。我已经在项目中添加了所有依赖项和权限,但似乎仍然无法正常工作。这是我在项目中拥有的所有文件。奇怪的是我的日志中没有任何错误或异常

////MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String imgUrl = "data:image/png;base64,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";

    ImageView imageView = (ImageView) findViewById(R.id.imageView);

    Glide.with(this)
            .load(imgUrl)
            .into(imageView);
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.banty.gallaryapp.MainActivity">

<ImageView
    android:id="@+id/imageView"
    android:layout_width="400dp"
    android:layout_height="400dp"
    android:layout_centerInParent="true"
    />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.banty.gallaryapp">
<uses-permission android:name="android.permission.INTERNET" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity> …
Run Code Online (Sandbox Code Playgroud)

android android-glide

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

查找Recycler视图中的第一个可见项是否是列表的第一项

我有一个包含13个数据项的回收站视图.我想知道列表中的第一项是否可见?

我知道类似的方法findFirstVisibleItemPosition,findLastVisibleItemPosition但他们没有告诉第一个可见项是否实际上是列表的第一项.

我试图解决的问题是,我有一个视图寻呼机作为我的回收器视图的第一项,我想在用户向下滚动时停止自动滚动,它变得完全不可见.

如果有人知道如何做到这一点,请帮助.

android android-recyclerview

0
推荐指数
1
解决办法
5831
查看次数