小编kar*_*nji的帖子

导入现有的c ++库(.a或.so文件)ndk android

我刚刚在android中进行了本机开发.我成功地将我的AndroidStudio 2.2.2准备好用于本机开发

我还构建了示例hello-jni项目

我想要实现的目标

我正在尝试使用用c ++设计的现有库(我将提供静态库.a扩展名或.so文件)

关于本土发展的几点混乱

1)我应该使用现有c ++库的.cpp和.h文件而不是.a.so文件吗?

2)我是否需要制作CMakeLists.text:据我搜索我的.a文件不是使用ndk-build生成的,所以我需要制作它.

如果我使用.cpp和.h文件,我应该制作Android.mkApplication.mk

CMakeLists.text是否将我新开发的android项目编译为库或我现有的.a文件?

3)我在哪里将.a文件放在我的项目中.它在jni文件夹下吗?

4)我的java类文件是否应该定义具有与c ++文件中实现的关键字本机相同的方法(例如:在c ++文件方法名称getData()中,java类应该包含公共本机getData())

java-native-interface android android-ndk .a .so

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

警报通知立即触发.Android的

我正在开发一个提醒,它会在固定时间向用户发送通知.

警报瞬间下降......

我尝试了大部分建议stackoverflow,但仍然遇到同样的问题

请帮我解决这个问题.

服务器数据

user_reminder": [
                {
                    "id": "75",
                    "name": "Morning Snacks",
                    "time": "11:00:00",
                    "days": "1,2,3,4,5,6,7",
                    "user_id": "14"
                },
                {
                    "id": "76",
                    "name": "Lunch",
                    "time": "13:00:00",
                    "days": "1,2,3,4,5,6,7",
                    "user_id": "14"
                },
               ......
            ]
Run Code Online (Sandbox Code Playgroud)

我的代码

for (int i = 0; i < reminderList.size(); i++) 
{
     String time = reminderList.get(i).getTime(); // "time": "11:00:00"

    String strSpit[] = time.split(":");
    String strDays[] = reminderList.get(i).getDays().split(","); //"days": "1,2,3,4,5,6,7"

    Date date = new Date();
    Calendar calNow = Calendar.getInstance();
    calNow.setTime(date);

    Calendar calAlarm = Calendar.getInstance();
    calAlarm.set(Calendar.HOUR_OF_DAY, Integer.parseInt(strSpit[0])); …
Run Code Online (Sandbox Code Playgroud)

notifications android alarmmanager

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

SecurityException: 不支持的路径 /storage/emulated/999/Download/somefile.pdf

我正在尝试从服务器下载一些 .pdf 文件到download文件夹

在某些设备上随机抛出此异常

Xiomi 运行 android (8,7,6):97% 仅在此设备中崩溃

已授予存储运行时权限并且可以正常工作

我发现某些设备即使在运行时许可后也无法工作

文件路径.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <files-path
        name="images"
        path="images/" />
    <external-files-path
        name="share"
        path="share/" />
    <external-files-path
        name="reminder_images"
        path="reminder_images/" />
</paths>
Run Code Online (Sandbox Code Playgroud)

安卓清单

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

Caused by java.lang.SecurityException: Unsupported path /storage/emulated/999/Download/Somefile.pdf
       at android.os.Parcel.readException(Parcel.java:2013)
       at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
       at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
       at android.content.ContentProviderProxy.insert(ContentProviderProxy.java:476)
       at android.content.ContentResolver.insert(ContentResolver.java:1555)
       at android.app.DownloadManager.enqueue(DownloadManager.java:1163)
       at com.esafirm.rxdownloader.RxDownloader.download(RxDownloader.java:83)
       at com.esafirm.rxdownloader.RxDownloader.download(RxDownloader.java:60)
       at in.okcredit.app.ui.account.AccountActivity.onReportGenerated(AccountActivity.java:320)
       at in.okcredit.app.ui.account.AccountPresenter$1.onSuccess(AccountPresenter.java:118)
       at in.okcredit.app.ui.account.AccountPresenter$1.onSuccess(AccountPresenter.java:111)
       at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81)
       at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:119)
       at android.os.Handler.handleCallback(Handler.java:794)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at …
Run Code Online (Sandbox Code Playgroud)

android securityexception runtime-permissions

7
推荐指数
0
解决办法
2462
查看次数

具有ViewModel和实时数据的ViewPager,所有6个标签数据都被最后一个标签数据替换

我对工作ViewPager有6个tabs地方只有一个片段TimesListFragment

根据传递给TimesListFragment它的参数调用api eg; 科学,技术,旅行等

我已经GithubBrowserSample为我的应用关注了Google的

我有TimesListFragment-> TimesViewModel->TimesRepository

有6个标签,当我点击api时,所有标签都显示相同的结果,如果最后一个 argument

StoriesPagerAdapter.kt

class StoriesPagerAdapter(fragmentManager: FragmentManager?)
    :FragmentStatePagerAdapter(fragmentManager){
    private val sections= arrayListOf("science","technology","business","world","movies","travel")
    override fun getItem(position: Int): Fragment {
        return TimesListFragment.newInstance(sections[position])
    }
    override fun getCount(): Int {
        return sections.size
    }
    override fun getPageTitle(position: Int): CharSequence? {
        return sections[position]
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:所有选项卡都显示travel参数数据

TimesViewModel

class TimesViewModel @Inject constructor(private val timesRepository: TimesRepository) :
        ViewModel() {
    lateinit var data: LiveData<Resource<TimesStoriesResponse>>
    fun fetchStories(section:String): LiveData<Resource<TimesStoriesResponse>> { …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-livedata android-viewmodel

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

双应用无法访问存储路径/storage/emulated/999/Download/somefile.pdf

我正在尝试将文件从服务器下载到Downloadandorid 的文件夹中

正如预期的那样工作正常

问题

当用户克隆我的应用程序(双应用程序)时,克隆的应用程序(第二个应用程序)抛出SecurityException: Unsupported path /storage/emulated/999/Download/somefile.pdf

研究

设备:红米5

应用程序:文件管理器(系统应用程序)

我找到了 2 个选项

  1. 内部存储器
  2. 双应用程序存储(它还具有下载文件夹和其他应用程序文件夹,如 Whatsapp)

仍然我的应用程序抛出SecurityException

android android-securityexception

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

尝试在空对象引用上调用虚方法GapWorker.remove(RecyclerView)'

我得到这个错误Recyclerviewproduction,但不知道究竟在类

我做了什么

谷歌它发现https://issuetracker.google.com/issues/38375597,其中人们说它的android bug并修复了support lib 27.1.0

我更新了我的支持lib和buildVersion

support           : '27.1.0',
buildToolsVersion: '27.0.3',
compileSdkVersion : 26,
Run Code Online (Sandbox Code Playgroud)

这种崩溃仍然发生

错误日志

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.GapWorker.remove(android.support.v7.widget.RecyclerView)' on a null object reference
       at android.support.v7.widget.RecyclerView.onDetachedFromWindow(RecyclerView.java:2534)
       at android.view.View.dispatchDetachedFromWindow(View.java:13586)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2849)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2846)
       at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3076)
       at android.view.ViewRootImpl.doDie(ViewRootImpl.java:5709)
       at android.view.ViewRootImpl.die(ViewRootImpl.java:5686)
       at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:387)
       at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:342)
       at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3893)
       at …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-recyclerview

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

ConstraintLayout占用另一个视图android的高度

我在用 constraintLayout

我希望我的一个观点能够看到另一个观点的高度

我希望自己有权利Textview采取左翼的高度TextView

我的代码:

<TextView
            android:id="@+id/tv_cal_consumed"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/button_selector_curved"
            android:drawableLeft="@drawable/ic_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:padding="10dp"
            android:text="@string/cal_consumed"
            android:textColor="@color/white"
            android:textSize="@dimen/text_small"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/tv_cal_burnt"
            app:layout_constraintTop_toBottomOf="@+id/con_info" />


        <TextView
            android:id="@+id/tv_cal_burnt"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"

            android:background="@drawable/button_selector_curved"
            android:drawableLeft="@drawable/ic_add"
            android:drawablePadding="5dp"
            android:gravity="start"
            android:padding="10dp"
            android:text="@string/cal_burnt"
            android:textColor="@color/white"
            android:textSize="@dimen/text_small"
            android:textStyle="normal"
            android:typeface="normal"
            app:layout_constraintTop_toTopOf="@+id/tv_cal_consumed"
            app:layout_constraintLeft_toRightOf="@+id/tv_cal_consumed"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="@+id/tv_cal_consumed" />
Run Code Online (Sandbox Code Playgroud)

当前输出:

在此输入图像描述

android android-constraintlayout

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

通过将航点传递给GoogleMaps android来创建电路路线

我正在处理我发送waypointsGmaps应用程序的功能,Intent以便使用可以通过waypoints我发送的自定义导航到目标

当我在嵌入式中绘制这条路线时Google Maps,我可以看到Circuit route,但是当我在Gmaps应用程序中看到相同的路线时,它就Circuit被打破了.

我的代码:

String srcAdd = "saddr="+latLngArrayList.get(0).latitude+","+latLngArrayList.get(0).longitude;
        String desAdd = "&daddr="+latLngArrayList.get(latLngArrayList.size() - 1).latitude+","+latLngArrayList.get(latLngArrayList.size() - 1).longitude;
        String wayPoints = "";

        for (int j = 1; j < latLngArrayList.size() - 1; ++j) {

            wayPoints =wayPoints+"+to:"+latLngArrayList.get(j).latitude+","+latLngArrayList.get(j).longitude;
        }

        String link="https://maps.google.com/maps?"+srcAdd+desAdd+wayPoints;
        final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(link));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
        startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

电路路线 在此输入图像描述

没有电路路线 在此输入图像描述

android google-maps google-maps-urls

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

Github Action 使用现有的 Python 脚本并获取 String 输出

我第一次致力于Github Action在 Android 中设置 CI/CD 工作流程

我有一个现有的Python scriptChange log成为HTML String out put.

我想在 github action 中使用它并接收更改日志作为字符串输出。

我有这样的事情

- name: Generate Change logs
  id: changelogs
  working-directory: .github/workflows/
  run: python release_mail_generator.py ${{ secrets.GITHUB_TOKEN }}  v2.21
Run Code Online (Sandbox Code Playgroud)

想使用这样的东西来获取changelog字符串作为输出

- name: Generate Change logs
  id: changelogs
  working-directory: .github/workflows/
  run: echo "::set-output name=changelog::$(echo python release_mail_generator.py ${{ secrets.GITHUB_TOKEN }}  v2.21)"
Run Code Online (Sandbox Code Playgroud)

我的python脚本

from __future__ import print_function

import sys
from collections import defaultdict
from github import Github

# Install …
Run Code Online (Sandbox Code Playgroud)

python workflow continuous-integration android github-actions

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