我正在尝试启动一个Intent
在我的应用程序中的资产文件夹中打开一个pdf.我已经阅读了几十篇帖子,但仍然被卡住了.显然我需要先将pdf复制到SD卡然后启动Intent
.它仍然无法正常工作.
我认为问题是Intent
启动所以我只是试图打开一个文件"example.pdf",我使用这段代码将其复制到SD卡上:
Log.w("IR", "TRYING TO RENDER: " + Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()+"/example.pdf"), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
Log.e("IR", "No exception");
}
catch (ActivityNotFoundException e) {
Log.e("IR", "error: " + e.getMessage());
Toast.makeText(InvestorRelations.this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
这是我的LogCat输出.
05-10 10:35:10.950: W/IR(4508): TRYING TO RENDER: /mnt/sdcard/example.pdf
05-10 10:35:10.960: E/IR(4508): No exception
Run Code Online (Sandbox Code Playgroud)
除了运行此代码之外,我得到以下Toast(不是我的应用程序生成的)
"不支持的文档类型"
但我可以通过安装的PDF查看应用程序手动打开文档.任何帮助将非常感激.
有很多关于这个问题的帖子(javax.net.ssl.SSLPeerUnverifiedException:没有对等证书),但我找不到任何适合我的问题.
许多帖子(像这样,这个)通过允许接受所有证书来"解决"这一点,但是,当然,除了测试之外,这不是一个好的解决方案.
其他人似乎很本地化,不适合我.我真的希望有人有一些我缺乏的见解.
所以,我的问题是:我正在一台只能通过本地网络访问的服务器上进行测试,通过HTTPS连接.我需要通过浏览器拨打电话工作正常.没有抱怨证书,如果你检查证书,这一切看起来都不错.
当我试用我的Android设备时,我明白了 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
这是调用它的代码:
StringBuilder builder = new StringBuilder();
builder.append( /* stuff goes here*/ );
httpGet.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
// Execute HTTP Post Request. Response body returned as a string
HttpClient httpClient = MyActivity.getHttpClient();
HttpGet httpGet = new HttpGet(builder.toString());
String jsonResponse = httpClient.execute(httpGet, responseHandler); //Line causing the Exception
Run Code Online (Sandbox Code Playgroud)
我的代码MyActivity.getHttpClient()
:
protected synchronized static HttpClient getHttpClient(){
if (httpClient != null)
return httpClient;
HttpParams httpParameters = new BasicHttpParams(); …
Run Code Online (Sandbox Code Playgroud) 我有一个Fragment
(兼容版本)的EditText
布局.我正在使用a ViewFlipper
在片段之间翻转.当我遇到这个问题时Fragment
,软键盘会自动打开.这不是我想要的.这是我试图阻止它或隐藏它.
尝试:
android:descendantFocusability="beforeDescendants"
Run Code Online (Sandbox Code Playgroud)
在片段的主视图上
尝试:
android:windowSoftInputMode="stateHidden"
Run Code Online (Sandbox Code Playgroud)
和
android:windowSoftInputMode="stateAlwaysHidden"
Run Code Online (Sandbox Code Playgroud)
在活动的清单中
尝试:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mViewPager.getChildAt(position).getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
在我的ViewPager的OnPageChangeListener上
尝试:
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(voucherView.findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
在我的片段中的onCreateView中
尝试:
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
在我的片段中的onStart中
尝试:
voucherView.findViewById(R.id.redeem_mobile_number).clearFocus();
Run Code Online (Sandbox Code Playgroud)
在我的片段中的onCreateView中
在我看来,onPageChangeListener就是这样做的地方,因为其他调用在软键盘实际打开之前发生.任何帮助都会很棒.
我刚刚看了一下Master/Detail Flow模板,我无法弄清楚2件事情.
1)当它生成的代码似乎使用Fragment兼容性支持时,为什么它需要Android版本11?特别是,为什么你不能生成运行Android版本8的模板?(例如此导入)
import android.support.v4.app.FragmentActivity;
Run Code Online (Sandbox Code Playgroud)
2)如果活动足够大,主活动如何知道是否在新活动或详细信息窗格中显示详细信息?它似乎是通过这段代码来做到的:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_list);
if (findViewById(R.id.item_detail_container) != null) {
mTwoPane = true;
((ItemListFragment) getSupportFragmentManager()
.findFragmentById(R.id.item_list))
.setActivateOnItemClick(true);
}
}
Run Code Online (Sandbox Code Playgroud)
setContentView(R.layout.activity_item_list);
将布局设置为ListFragment
只设置自己的适配器,但我看不出如何findViewById(R.id.item_detail_container) != null
返回true,因为它似乎永远不会被打开/膨胀.
有线索吗?
我正在尝试创建这样的自定义开关:
我觉得我需要的是左/右抽屉,每个都是绿色/白色状态,或者是绿色轮廓,带有抽屉,用于选择时.
我不喜欢在帖子明白这是所有样本绘制资源如何"打开"按钮,偏到左边提供向右倾斜,然而.
我正在尝试使用以下'拇指'可绘制.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/choice_right"/>
<item android:drawable="@drawable/choice_left"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
但它似乎削减了抽签的目的.如果我也设置了这样的轨道:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="@color/text_input"/>
<corners
android:radius="1dp"
android:bottomLeftRadius="4.5dp"
android:bottomRightRadius="4.5dp"
android:topLeftRadius="4.5dp"
android:topRightRadius="4.5dp" >
</corners>
</shape>
Run Code Online (Sandbox Code Playgroud)
然后我得到的只是一条细线.所以,我不确定下一步该尝试什么.
我想知道创建额外的主要方法会对您的代码产生什么影响.
例如,
public class TestClass {
public static void main (String[] args){
TestClass foo = new TestClass();
}
}
Run Code Online (Sandbox Code Playgroud)
程序最初启动后,将创建foo,并在其中包含另一个公共main方法.这会导致任何错误吗?
我想在电子邮件正文中创建表.我读了一些android不支持表标签的地方.如何实现这一点.请任何人帮助我.
输出:
谢谢
我有一个包含3行数字的表(摘要信息).TextViews使用默认重力设置样式时,文本显示正确.
但是当它们被设置为样式时<item name="android:gravity">right</item>
,每个TextView只显示它应该的第一个字符.
这甚至包括列标题 - 这里没有显示 - 我甚至没有改变.
我希望表值正确对齐以与应用程序的其余部分保持一致,并且我难以理解为什么表中的值将表现得像这样.
这是我的风格(当它不起作用时):
<style name="summary_values">
<item name="android:textSize">@dimen/font_size</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/background</item>
<item name="android:gravity">right</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这是其中一个单元格的XML(它们基本相同)
<TextView
android:id="@+id/value1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="@integer/table_weight_percent_value"
style="@style/summary_values"/>
Run Code Online (Sandbox Code Playgroud)
编辑
即使gravity
设置为left
或,也会发生截断center
.
编辑2
我已经<item name="android:gravity">right</item>
完全从样式中删除了这一行,它有时会截断,具体取决于值.我已经完成了我的代码,代码中的值是正确的.
编辑3
删除除字体颜色之外的所有样式后,截断仍然会发生,但我还没弄清楚何时.如果我更改输入表中的数字,则汇总值有时会被截断,有时则不会.
这是表格中的一行.除了id更改之外,所有行都相似.
<TableRow
android:padding="@dimen/pad_12">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="@integer/table_weight_percent_label"
android:text="@string/cho"
style="@style/label_light"/>
<TextView
android:id="@+id/percent_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="@integer/table_weight_percent_value"
style="@style/summary_values"/>
<TextView
android:id="@+id/val1a"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="@integer/table_weight_percent_value"
style="@style/summary_values"/>
<TextView
android:id="@+id/val1b"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="@integer/table_weight_percent_value"
style="@style/summary_values"/>
</TableRow>
Run Code Online (Sandbox Code Playgroud)
编辑4
尝试了一些事情后,我改变了包含TableView
一个LinearLayout
与水平方向.我甚至将TableRow …
我正在开发一个需要服务器完成大部分繁重工作的应用程序.我想防止盗版客户端向该服务器发送请求.有没有办法发送一些带有请求的标识符,以便我的服务器可以询问Android Market是否有该ID的用户实际购买了应用程序?我该怎么做呢?
请注意,仅使用LVL保护应用程序是行不通的,因为人们可以相当轻松地编写应用程序以与服务器连接,并仍然提供与付费应用程序相同的功能.
我正在为我的应用添加一个MapFragment,并提供以下代码,改编自地图教程:
private boolean servicesConnected() {
// Check that Google Play services is available
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
// If Google Play services is available
if (ConnectionResult.SUCCESS == resultCode) {
// In debug mode, log the status
Log.d("Location Updates", "Google Play services is available.");
// Continue
return true;
// Google Play services was not available for some reason
} else {
GooglePlayServicesUtil.getErrorDialog(resultCode, this, 7).show();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用过时的谷歌播放服务在出厂重置Galaxy选项卡10.1上进行测试.因此,当我尝试打开MapFragment时,我打电话servicesConnected()
来检查,并且正如预期的那样,我得到一个对话框,告诉我我需要Google Play服务.在对话框的底部有一个"获取Google Play服务"按钮,但是当我点击它时,它什么也没做.我的LogCat产生以下输出:
07-23 15:30:43.580: W/GooglePlayServicesUtil(2515): Google Play services is missing. …
Run Code Online (Sandbox Code Playgroud)