我有一个Android应用程序,应该打开通过电子邮件发送的链接.不过,我只想打开某个网站的链接.我知道打开youTube链接会为用户提供一个对话框,询问是在浏览器中还是在youTube应用程序中打开它,这就是我想要的.在我的Android清单文件中,我有以下意图过滤器:
<activity android:name=".MyApp"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="http"
android:host="mySite.com" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
然后,为了处理意图,我在onCreate中有一行:
if (getIntent().getCategories().contains("android.intent.category.BROWSABLE")){...}
Run Code Online (Sandbox Code Playgroud)
问题是像http://mySite.com#12345这样的链接没有以这种方式打开.我究竟做错了什么?
我正在设计一个自定义呼叫屏幕,以在电话交谈期间在屏幕上显示信息,例如呼叫者的地址簿信息.我的应用程序将在用户通过使用a按下呼叫按钮时开始Intent Filter,之后我将从地址簿中获取其他信息并将其添加到屏幕.
我的问题是,当按下呼叫按钮时,我activity没有启动.我的意图过滤器对吗?是否有可能拦截电话Intent?请分享您处理电话会议的知识.
我Intent Filter的如下所示.
<activity android:name=".MyCallingScreen">
<intent-filter android:priority="100">
<action android:name="android.intent.action.CALL_BUTTON" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud) (Newbe)
当我单击菜单时,上面的方法返回第一个菜单中的ID,而不是我点击的ID.如果我检查菜单的标题浓缩,那是正确的.
int id = item.getItemId(); //returns id of an incorrect menu
String Title = (String) item.getTitleCondensed(); //this returns the correct title.
Run Code Online (Sandbox Code Playgroud)
欢迎任何想法.
这个标题有点令人困惑,所以让我分解一下.基本上我有一个包含各种名称和扩展名的完整文件目录:
MainDirectory/
image_1.png
foobar.jpeg
myFile.txt
Run Code Online (Sandbox Code Playgroud)
对于iPad应用程序,我需要创建这些副本,并在扩展名之前附加到所有这些文件名末尾的后缀@ 2X - 所以我最终得到这个:
MainDirectory/
image_1.png
image_1@2X.png
foobar.jpeg
foobar@2X.jpeg
myFile.txt
myFile@2X.txt
Run Code Online (Sandbox Code Playgroud)
我不是手动一次更改一个文件名,而是想创建一个脚本来为我处理它.我目前有以下内容,但它没有按预期工作:
#!/bin/bash
FILE_DIR=.
#if there is an argument, use that as the files directory. Otherwise, use .
if [ $# -eq 1 ]
then
$FILE_DIR=$1
fi
for f in $FILE_DIR/*
do
echo "Processing $f"
filename=$(basename "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
newFileName=$(echo -n $filename; echo -n -@2X; echo -n $extension)
echo Creating $newFileName
cp $f newFileName
done
exit 0
Run Code Online (Sandbox Code Playgroud)
我也希望将它保持为纯粹的bash,而不是依赖于特定于os的调用.我究竟做错了什么?为了做我需要的,我可以改变什么或代码将起作用?
我想以编程方式在圆圈或半圆中添加文本,这样的方式是不是使用带有边线的圆圈,而是边缘是单词.有关更好的解释,请参见图像.

我怎样才能在Android中执行此操作,或者我可以阅读哪些资源来帮助解决此问题?
可能重复:
有没有办法通过双击自动访问任何登录Logcat?
如果从应用程序向logcatin 印刷警告或错误堆栈跟踪,我可以双击它的一行,以查看源代码中此堆栈跟踪所讨论的位置.有没有办法通过Android或Eclipse SDK打印我自己的带有代码链接的消息?EclipseAndroid
我有一个 groovy 库,我将其作为 jar 文件发布在 Nexus 存储库上。当我使用另一个项目的 Gradle 脚本中的库中的扩展方法时,我收到MissingMethodException。
作为参考,假设我有一个 String 扩展方法,例如:
static boolean containsIgnoreCase(String self, String str) {
self.toLowerCase().contains(str.toLowerCase())
}
Run Code Online (Sandbox Code Playgroud)
如果在我的库中使用调用该方法"foobar".containsIgnoreCase("Foo"),我将得到异常。如果我改为使用 来调用它StringExtensions.containsIgnoreCase("foobar", "Foo"),它就可以工作,没问题。
我的猜测是,这是在没有定义扩展的 META-INF 文件的情况下发布 Groovy 项目的问题。这是项目结构:
- Library
- src/main/
- groovy/
- (here are my sources)
- resources/META-INF/groovy
- org.codehaus.groovy.runtime.ExtensionModule (contains details about my extension classes)
Run Code Online (Sandbox Code Playgroud)
我的 ExtensionModule 文件如下所示:
moduleName=string-extensions
moduleVersion=1.0
extensionClasses=com.my.project.StringExtensions
Run Code Online (Sandbox Code Playgroud)
在build.gradle的发布块中,我使用以下内容:
plugins {
id 'groovy'
id 'java'
id 'maven-publish'
}
//...
sourceSets {
main.groovy.outputDir = sourceSets.main.java.outputDir
test.groovy.outputDir …Run Code Online (Sandbox Code Playgroud) 我正在努力让一些元数据在 Android 上工作。最具体地说,我正在获取应用程序级元数据来设置视图的背景,格式如下:
<meta-data android:name="background"
android:value="red" />
<meta-data android:name="background"
android:resource="@drawable/my_red_background" />
<meta-data android:name="background"
android:value="#FF0000" />
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来解析信息:
ApplicationInfo app = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
Bundle metaData = app.metaData;
if (metaData != null) {
int resourceID = metaData.getInt("background", -1);
if (resourceID != -1) {
//set the background resource of my view (THIS WORKS)
}
else {
String background = metaData.getString("background");
if (background != null) {
try {
backgroundColor = Color.parseColor(background);
//Set background color (THIS WORKS for 'red', 'blue', etc.)
}
catch (IllegalArgumentException e) { …Run Code Online (Sandbox Code Playgroud) 我正在努力实现一些低级文件写入,其中文件格式具体到每一位。我需要将一个字符串从一个NSString长度为 16 的空终止字符串复制(根据 Xcode,这是不可分配的)。说到 ,我完全是个菜鸟c,并且想确保我正确理解这一点。这就是我目前正在做的事情:
//I have a non-null NSString called _friendly_name.
const char *string = [_friendly_name UTF8String];
//profile.friendly is a utf-8 null-terminated string
memcpy(&profile.friendly_name, &string, 16);
Run Code Online (Sandbox Code Playgroud)
这尚未经过测试,但我想确保这会起作用。这会提供我期望的行为吗?或者我应该以不同的方式复制字符串(例如strcpy)?