TargetSDK 23的分享截圖,鈦SDK 5.4.0Appcelerator的:一個特定視圖的文件權限原因被拒絕的消息
權限設置:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我拿一個視圖的截圖通過寫它到一個文件。這工作,因爲我可以將此文件添加到imageview並查看圖像。
var blob = masterView.views[currentSavedPage].toImage();
var file = Titanium.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory, "myNewImage.jpg");
file.write(blob);
當我嘗試與其他文本共享圖像時,其他應用程序(Facebook,WhatsApp,...)無法訪問圖像。
intent = Ti.Android.createIntent({
action : Ti.Android.ACTION_SEND,
type : "image/jpeg"
});
intent.putExtra(Ti.Android.EXTRA_TEXT, text);
intent.putExtra(Ti.Android.EXTRA_SUBJECT, subject);
intent.putExtraUri(Ti.Android.EXTRA_STREAM, file.nativePath);
share = Ti.Android.createIntentChooser(intent, 'Bild teilen');
我只有一個權限被拒絕爲錯誤,不知道如何解決這個問題。這與較低的SDK版本一起工作。
fb4a.RequestLoggingListener: java.io.FileNotFoundException: /data/user/0/de.myapp.id/app_appdata/myNewImage.jpg: open failed: EACCES (Permission denied)
ExifInterface: java.io.FileNotFoundException: /data/user/0/de.myapp.id/app_appdata/myNewImage.jpg: open failed: EACCES (Permission denied)
BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /data/user/0/de.myapp.id/app_appdata/myNewImage.jpg: open failed: EACCES (Permission denied)
解決方案:
if (!Ti.Filesystem.hasStoragePermissions()) {
Ti.Filesystem.requestStoragePermissions(function(result) {
if (result.success) {
openShareIntent();
} else {
alert('Permissions denied.');
}
});
} else {
openShareIntent();
}
非常感謝 –