小编Dr *_*ido的帖子

如何使用改造的博主使用FCM通知

如果没有
Managed by google像blogger模板那样的托管/自己的服务器,我正在寻找设置FCM服务器协议的方法,并设置项目的依赖项.
我在这个问题中看到了.一些答案包含类似于使用"okhttp3"的改装代码的代码

String SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
String FCM_ENDPOINT
     = "https://fcm.googleapis.com/v1/projects/zoftino-stores/messages:send";

GoogleCredential googleCredential = GoogleCredential
    .fromStream(new FileInputStream("firebase-private-key.json"))
    .createScoped(Arrays.asList(SCOPE));
googleCredential.refreshToken();
String token = googleCredential.getAccessToken();



final MediaType mediaType = MediaType.parse("application/json");

OkHttpClient httpClient = new OkHttpClient();

Request request = new Request.Builder()
    .url(FCM_ENDPOINT)
    .addHeader("Content-Type", "application/json; UTF-8")
    .addHeader("Authorization", "Bearer " + token)
    .post(RequestBody.create(mediaType, jsonMessage))
    .build();


Response response = httpClient.newCall(request).execute();
if (response.isSuccessful()) {
    log.info("Message sent to FCM server");
}
Run Code Online (Sandbox Code Playgroud)

目前我在我的Android应用程序中使用blogger api通过使用改造和REST API作为json对象来集成博客内容.这是我用来检索博客的BloggerAPI类

public class BloggerAPI {

    public static final String BASE_URL …
Run Code Online (Sandbox Code Playgroud)

android json firebase retrofit firebase-cloud-messaging

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

如何将 MVVM 与 App/activity 和 AsyncTask 的 UI 组件一起使用

据我所知,ViewModel 应该与 UI/View 隔离,并且只包含观察来自服务器或数据库的数据的逻辑

在我的应用程序中,我使用了 REST API“改造”和博主 API,并尝试将当前代码迁移/升级到 MVVM,但存在一些问题,让我们转到代码

BloggerAPI 类

    public class BloggerAPI {

    private static final String BASE_URL =
            "https://www.googleapis.com/blogger/v3/blogs/4294497614198718393/posts/";

    private static final String KEY = "the Key";
    private PostInterFace postInterFace;
    private static BloggerAPI INSTANCE;

    public BloggerAPI() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
         postInterFace = retrofit.create(PostInterFace.class);
    }

    public static String getBaseUrl() {
        return BASE_URL;
    }

    public static String getKEY() {
        return KEY;
    }

    public static BloggerAPI getINSTANCE() {
        if(INSTANCE == null){
            INSTANCE = new BloggerAPI(); …
Run Code Online (Sandbox Code Playgroud)

java android mvvm android-asynctask retrofit

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

如何在Java中将文件/目录移动到回收站而不是永久删除它

我正在尝试创建 GUI 示例,当用户单击按钮时删除文件和/或目录,但我看到文件被永久删除,如何使其移动到回收站而不是这个

  if (File_path.getText().isEmpty()) {
        JOptionPane.showMessageDialog(null, "Please select a file or directory", "Info", JOptionPane.INFORMATION_MESSAGE);
    } else {
        File FileName = new File(File_path.getText());
        boolean FileDeleted = FileName.delete();
        if (FileDeleted == true) {
            JOptionPane.showMessageDialog(null, "File Deleted Successfully", "Info", JOptionPane.INFORMATION_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(null, "File Not Found", "Info", JOptionPane.INFORMATION_MESSAGE);
        }
    }
Run Code Online (Sandbox Code Playgroud)

java swing file java-7 java-8

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

无法从网络安全配置 XML 引用原始资源

我正在尝试按照此处使用自定义证书的 Android 文档进行操作。所需的网络配置文件是:

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

我已经创建了 network_security_config.xml 并将引用 a 添加ndroid:networkSecurityConfig="@xml/network_security_config"到我的清单中。我有需要包含的 .crt 文件,但我有两个问题:

  1. 我无法在我的原始文件夹中创建目录,当我这样做时,它会在我的文件系统中创建目录,但不在项目中的原始资源目录中。

  2. 代替目录,我只是直接在原始文件夹中引用我的 .crt 文件,但是当我尝试引用证书时,这是我的 network_security_config.xml

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config>
            <trust-anchors>
                <certificates src="@raw/cert_cubic_trusted_ca-sha256.crt"/>
                <certificates src="system"/>
            </trust-anchors>
        </base-config>
    </network-security-config>
    
    Run Code Online (Sandbox Code Playgroud)

我得到一个红色波浪线,错误“缺少 src 资源。”,当我尝试构建时,构建日志输出错误:

AGPBI: {"kind":"error","text":"error: resource raw/certname.crt (aka com.comname.appname:raw/certname.crt) not found.","sources":[{"file":"/Users/205314/project/appname/app/src/main/res/xml/network_security_config.xml","position":{"startLine":5}}],"original":"","tool":"AAPT"}
:app:processDebugResources
:app:processDebugResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to process resources, see …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-xml android-gradle-plugin android-network-security-config

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

单击 AlertDialog 项目列表时,在 RecyclerView 布局之间切换

我有 3 种不同的布局cardsListLayouttitleLayoutcardMagazineLayout将来可能会有更多,用作方法的视图onCreateViewHolder

我想在onCreateViewHolder方法中的视图之间切换,所以当用户从 AlertDialog 列表中选择时

这个 onOptionsItemSelected 在 MainActivity 那里有菜单项“更改布局”,以便当用户按下它时出现 AlertDialog 列表

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.change_layout) {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(getString(R.string.choose_layout));

            String[] layouts = {"Title Layout", "Cards List", "Card Magazine Layout"};
            builder.setItems(layouts, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int index) {
                    switch (index) {
                        case 0: // Title layout
                            Toast.makeText(MainActivity.this,
                                    "Title layout", Toast.LENGTH_LONG).show();
                            break;
                        case 1: // Cards List …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-viewholder android-recyclerview recyclerview-layout

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

io.jsonwebtoken.security.weakkeyexception:验证密钥的大小为 48 位,对于 HS256 算法来说不够安全

我试图从我的 Web 应用程序的 api 中获取一个令牌,并在 android studio 中从中解析出用户 ID。我正在使用 jjwt 解码令牌,但遇到了这个问题。我在网上阅读,解决方案说要确保我的“密钥”在 base 64 中,但它仍然导致问题。

我尝试使用编码器和在线编码器并对我的“秘密”的 base-64 字符串进行硬编码,但仍然返回相同的问题。在这里可以找到指向有类似问题的人的链接 github.com/auth0/node-jsonwebtoken/issues/208

    final TextView tv = (TextView) findViewById(R.id.tvText);

    final String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjVjOWYzYWI2NzY2Mjg2NDYyNDY0YTczNCIsIm5hbWUiOiJSYW5keSIsImF2YXRhciI6Ii8vd3d3LmdyYXZhdGFyLmNvbS9hdmF0YXIvMTNhN2MyYzdkOGVkNTNkMDc2MzRkOGNlZWVkZjM0NTE_cz0yMDAmcj1wZyZkPW1tIiwiaWF0IjoxNTU0NTIxNjk1LCJleHAiOjE1NTQ1MjUyOTV9._SxRurShXS-SI3SE11z6nme9EoaD29T_DBFr8Qwngkg";
    final String secret = "secret";
    String secret64 = "c2VjcmV0";

    String encoded = Base64.encodeToString(secret.getBytes(), Base64.DEFAULT);

    Jws<Claims> jws;
    try {
        jws = Jwts.parser()         // (1)

                .setSigningKey(secret64)       // (2)
                .parseClaimsJws(token); // (3)

        // we can safely trust the JWT

    }
    catch (JwtException ex) {       // (4)
        // we *cannot* use the JWT as intended …
Run Code Online (Sandbox Code Playgroud)

java base64 android token jwt

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

将android Facebook SDK添加到项目后,java.lang.NoClassDefFoundError和ClassNotFoundException

我刚刚将android Facebook SDK添加到我的项目中,以使用Facebook广告来推广我的应用,并且该应用在启动时崩溃,但出现了此异常

这是日志

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: www.pro_cs_is.com, PID: 20307
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/appevents/InternalAppEventsLogger;
        at com.facebook.marketing.internal.MarketingLogger.<init>(MarketingLogger.java:47)
        at com.facebook.marketing.internal.MarketingInitProvider.setupCodeless(MarketingInitProvider.java:68)
        at com.facebook.marketing.internal.MarketingInitProvider.onCreate(MarketingInitProvider.java:49)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1927)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1902)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6528)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6021)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5927)
        at android.app.ActivityThread.access$1200(ActivityThread.java:200)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1673)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.appevents.InternalAppEventsLogger" on path: DexPathList[[zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/base.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_dependencies_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_resources_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_0_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_1_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_2_apk.apk", zip file "/data/app/www.pro_cs_is.com-ewD1U225Ajh1l9uikBkdWg==/split_lib_slice_3_apk.apk", …
Run Code Online (Sandbox Code Playgroud)

android facebook noclassdeffounderror classnotfoundexception facebook-sdk-4.0

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

recyclerView.addOnScrollListener - “使用 MVVM 改造分页”正在加载相同的响应/列表

我在我的应用程序中使用博主 API、改造和 MVVM,我尝试在用户滚动时使用分页加载更多帖子,这里发生的问题是响应正在加载它自己“相同的列表/相同的十个帖子正在再次加载”

这是我的代码

PostsClient 类

public class PostsClient {

    private static final String TAG = "PostsClient";

    private static final String KEY = "XYZ sensitive key!";
    private static final String BASE_URL = "https://www.googleapis.com/blogger/v3/blogs/4294497614198718393/";

    private PostInterface postInterface;
    private static PostsClient INSTANCE;

    public PostsClient() {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        postInterface = retrofit.create(PostInterface.class);

    }

    public static PostsClient getINSTANCE() {
        if(INSTANCE == null){
            INSTANCE = new PostsClient();
        }
        return INSTANCE;
    }



    public Call<PostList> getPostList(){

        return postInterface.getPostList(KEY);
    }



}

Run Code Online (Sandbox Code Playgroud)

[ 后 …

android mvvm infinite-scroll retrofit android-recyclerview

6
推荐指数
0
解决办法
618
查看次数

sdkmanager 打不开:我只得到 [=========] 100% 计算更新

我遇到了与这里相同的问题:How to open Android SDK manager fromterminal?

该问题被标记为与此问题重复:How to open then the Android SDK Manager through theterminal?

但是,正如您在评论中看到的那样,它实际上不是重复的,因为问题是不同的。

无论如何,这两个问题的答案都没有解决我的问题。

我已经下载了 Android SDK,仅适用于 Windows 10 的命令行工具。当我运行:时.\sdkmanager.bat,我收到此消息:[=======================================] 100% Computing updates...但没有任何反应。

我已经安装了Java,一切似乎都正常。

android android-sdk-manager flutter

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

不推荐使用RoomDatabase回调

在构建应用程序时,我得到以下信息:

[deprecation] mCallbacks in RoomDatabase has been deprecated
Run Code Online (Sandbox Code Playgroud)

不知道如何解决它。这里是依赖项:

implementation "androidx.room:room-runtime:2.1.0-alpha04"
implementation 'androidx.room:room-rxjava2:2.1.0-alpha04'
annotationProcessor "androidx.room:room-compiler:2.1.0-alpha04"
Run Code Online (Sandbox Code Playgroud)

是因为我正在运行Alpha版本吗?

android android-room androidx

5
推荐指数
0
解决办法
206
查看次数