据我所知,只有三种方法可以通过阅读现有问题来获取MIME类型.
1)使用.从文件扩展名确定它 MimeTypeMap.getFileExtensionFromUrl
2)使用inputStreamwith "猜猜"URLConnection.guessContentTypeFromStream
3)使用ContentResolver内容Uri获取MIME类型(内容:\)context.getContentResolver().getType
但是,我只有文件对象,可获取的Uri是文件路径Uri(文件:).该文件没有扩展名.还有办法获取文件的MIME类型吗?或者从文件路径Uri确定内容Uri的方法?
例如,我正在尝试获取用户输入的网址的图标
_url = "google.com";
Run Code Online (Sandbox Code Playgroud)
我使用HttpUrlConnection /favicon.ico从主机url 的扩展中获取favicon的位图.
String faviconString = Uri.parse(_url).getHost() + "/favicon.ico";
URL faviconUrl = null;
Bitmap favicon = null;
try
{
faviconString = "http://" + faviconString;
faviconUrl = new URL(faviconString);
HttpURLConnection connection = (HttpURLConnection) faviconUrl.openConnection();
connection.setDoInput(true);
connection.connect();
favicon = BitmapFactory.decodeStream(connection.getInputStream());
}
catch (IOException e)
{
e.printStackTrace();
}
return favicon;
Run Code Online (Sandbox Code Playgroud)
但是,由于用户可能不会指定http://或https://,我将不得不自己添加它.我遇到的问题是,如果我http://在网址前添加,一切都会正常工作,但是https://,有些网站会返回图标,其他网站只会给我null.如何找出使用哪个页面https?我应该http://为每个案例添加一下吗?是否有任何网站严格限制https并将返回null使用http?
我有一个9patch设置作为我的布局的背景.但是我仍然想通过使用selectableItemBackgroundattr 提供触摸反馈.
我已经使用试图<layer-list>与9patch和selectableItemBackground作为android:drawable第二的<item>,但没有奏效.
我也可以尝试进行选择和覆盖梯度绘制Android使用了selectableItemBackground在list_selector_background_pressed.xml同一个<layer-list>.但是在4.4 KitKat中,选择的背景颜色实际上是灰色而不是JellyBeans中的蓝色,所以我不能真正硬编码:(
合适的方式,对吧?d:
有没有办法让Android可访问性中的对讲功能在片段事务后说出什么?我基本上希望对话在切换后说出片段的名称/标题.这些标题被设置为操作栏的标题,可以在那里访问吗?用户可以将他们的手指移动到操作栏中的文本顶部以了解他们所在的屏幕,但除非他们已经熟悉该应用,否则用户将不会知道.
因此,对于我Dialog的其中之一,我正在实现滑动动画。它适用于进入和退出。但是,当用户按下“主页”按钮且应用程序windowExitAnimation处于后台时,仍然会播放,而回到应用程序时,windowEnterAnimation也会播放。有没有一种方法只能在显示/关闭对话框时播放这些动画,而不能在使用“主页”按钮时播放这些动画?
这是我的xml的主题
<style name="MyDialogAnimationTheme">
<item name="android:windowAnimationStyle">@style/MyDialogAnimationTheme.Window</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="MyDialogAnimationTheme.Window" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在代码中,我正在通过重写设置主题getTheme()为DialogFragment
@Override
public int getTheme() {
return R.style.MyDialogAnimationTheme;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过这样设置windowAnimation:
myDialog.getWindow().getAttributes().windowAnimations = R.style.MyDialogAnimationTheme_Window;
Run Code Online (Sandbox Code Playgroud)
但同样的问题,动画可以正常播放,但也可以在应用程序的“主页”按钮中播放。
我正在尝试重载一个类的<<运算符,以在Java中模拟toString().我有一个NumExpr类,并且有number我要输出的私有变量.所以他们在这里:
NumExpr::NumExpr( string n ) {
number = atoi( n.c_str() );
}
string NumExpr::name() {
return "num";
}
ostream & operator<<(ostream &s, const NumExpr &num) {
s << num.number;
return s;
}
Run Code Online (Sandbox Code Playgroud)
我把它变成了一个友元函数,所以它可以访问私有变量
class NumExpr : public Expr {
public:
NumExpr( string v );
string name();
private:
int number;
friend ostream& operator<<(ostream &s, const NumExpr &num);
};
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误
./ast/Expr.cpp:在函数中?std :: ostream&operator <<(std :: ostream&,const NumExpr&)?:./ some/Expr.cpp:50:错误:不匹配?operator <NumExpr ::数?./ast/Expr.cpp:49:注意:候选人是:std :: ostream&operator <<(std :: ostream&,const NumExpr&)
我一直在寻找这个错误,人们似乎遇到了同样的问题,但我看起来似乎是人们给出的解决方案.我有什么根本性的错误,或者是否有一些我不知道的语法诡计?
谢谢您的帮助!
我MediaStore.ACTION_IMAGE_CAPTURE用来拍照,MediaStore.EXTRA_OUTPUT指向Uri存储所有其他照片/视频文件的 DCIM/Camera 目录。
照片文件已成功拍摄,我可以使用 ES 文件资源管理器查看它,并且可以在我的应用程序中查看它。但是当我使用它时它没有显示在画廊中Intent.ACTION_PICK
Intent selectPictureIntent = new Intent(Intent.ACTION_PICK);
selectPictureIntent.setType("image/*");
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关在图片使用后更新图库的其他主题
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
Run Code Online (Sandbox Code Playgroud)
并且
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _outputMediaUri);
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
这里发生了什么 :(
我正在尝试使用后获取已加载页面的图标
WebView webView = new WebView(getActivity());
webView.loadUrl("http://" + url);
Run Code Online (Sandbox Code Playgroud)
我将异步附加WebViewClient到WebView加载后获取网站图标
webView.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
String linkTitle = view.getTitle();
Bitmap favicon = view.getFavicon();
onLinkUrlFinished(url, linkTitle);
}
});
Run Code Online (Sandbox Code Playgroud)
返回的 favicon 始终为空,即使对于 google/facebook 等肯定具有 favicon 的网站也是如此。
另一个线程说要使用,WebIconDatabase但已弃用:
显示 Android WebView 的图标
android 站点上的 API 所指的WebViewClient.onReceivedIcon甚至不存在。http://developer.android.com/reference/android/webkit/WebView.html#getFavicon%28%29
这里发生了什么?
我想对一个操作文本文件内容的类进行单元测试.我有一组现有的文本文件作为测试用例.我如何以及在何处存储JUnit测试将使用的这些文本文件?
我已经尝试将它们与单元测试.Java文件放在同一目录中并尝试访问它们,但是我找不到一个文件:
File baseFile = new File("base_test.txt");
assertTrue(baseFile.exists());
Run Code Online (Sandbox Code Playgroud)
编辑:
根据答案,我尝试使用文件ClassLoader.文件在那里,但是当我尝试使用InputStream那些文件时,我得到了一个"Stream Closed"例外.
我试过InputStream从文件和URL中获取两者:
FileInputStream in = new FileInputStream(new File(filename));
...
InputStream in = baseUrl.openStream();
Run Code Online (Sandbox Code Playgroud)
同样的例外.
android ×7
java ×5
favicon ×2
file ×2
c++ ×1
http ×1
junit ×1
mediastore ×1
mime-types ×1
nine-patch ×1
overloading ×1
photo ×1
talkback ×1
webview ×1