小编gow*_*ami的帖子

使用 Android Q ffmpeg 拒绝权限”:错误=13,权限被拒绝

我想使用 ffmpeg 从 RTSP 视频中获取帧。但是对于上面的 android 10,我收到如下错误。

 E/FFmpeg: Exception while trying to run: [Ljava.lang.String;@55e447f
java.io.IOException: Cannot run program "/data/user/0/com.example.downloadimagefromurl/files/ffmpeg": error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
    at java.lang.Runtime.exec(Runtime.java:698)
    at java.lang.Runtime.exec(Runtime.java:563)
    at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
    at android.os.AsyncTask$3.call(AsyncTask.java:378)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)
 Caused by: java.io.IOException: error=13, Permission denied
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
Run Code Online (Sandbox Code Playgroud)

正如@Saurabh Thorat 提供的答案一样,Google 不允许应用程序从 /data/user 目录运行二进制文件。

我知道的一个糟糕的解决方案是将 compileSdkVersion 和 targetSdkVersion 更改为 28 或更低,然后重新发布我不推荐的应用程序。

因此,我也在为未来的版本寻找更可行的解决方案。

任何提示、链接或建议将不胜感激。提前致谢。

permissions android ffmpeg rtsp android-10.0

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

是否有机会在 android 中更改构建变体运行时间

我使用产品风格来构建不同的应用程序。如果我在运行应用程序之前在构建变体中选择免费风格,则免费风格将运行,如果我选择付费风格,则将运行付费风格。

我想更改运行时间意味着在运行应用程序后,如果我们单击按钮,它必须更改付费应用程序。是否有机会通过编程更改构建变体选择运行时间。

class productFlavors {
    free{

    }

    paid{

    }
}
Run Code Online (Sandbox Code Playgroud)

我用这些作为调味品。

如果有人知道解决方案,请帮助我解决我的问题。

提前致谢。

android android-productflavors android-build-flavors build-variant

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

后台服务在奥利奥中不起作用

如果我也杀死了应用程序实例,我想在后台运行我的应用程序。但是在我杀死我的应用程序后,该服务也停止工作。这是我的代码,请任何人帮助我解决我的问题。

我按照此链接在后台运行,但如果我删除实例,它就不起作用。如果实例也被删除,请任何人告诉我如何运行后台服务?

这是我的主要活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ctx = this;
    setContentView(R.layout.activity_main);
    Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(MainActivity.this, ALARM_REQUEST_CODE, alarmIntent, 0);
    mSensorService = new SensorService(getCtx());
    mServiceIntent = new Intent(getCtx(), mSensorService.getClass());
    if (!isMyServiceRunning(mSensorService.getClass())) {
        startService(mServiceIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的服务类

   public class SensorService extends Service{

public int counter=0;
public SensorService(Context applicationContext) {
    super();
    Log.i("HERE", "here I am!");
}

public SensorService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    startTimer();
    return START_STICKY; …
Run Code Online (Sandbox Code Playgroud)

android background android-8.1-oreo

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