我已经研究了大多数自定义URL方案问答,但我没有找到可能的答案.
我想通过点击浏览器中的某个URL(移动设备上的任何一个)来启动我的应用程序,问题是我的给定URL无法修改,因为它也提供IOS应用程序,它看起来像这样:
"myapp:// http://www.name.com/path/path2/ "
我不知道如何处理"myapp:// http://"并构建一个正确的意图过滤器,我尝试的一切都行不通.任何帮助将不胜感激,如果我错过了相关的答案,请不要道歉.
这是我到目前为止所尝试的:
<activity
android:name="com.myapp.test.SplashScreen"
android:exported="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Test for URL scheme -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.name.com"
android:path="/path/path2/"
android:scheme="http" />
<data
android:host="www.name.com"
android:path="/path/path2/"
android:scheme="https" />
<data android:scheme="myapp" />
</intent-filter>
<!-- End Test for URL scheme -->
</activity>
Run Code Online (Sandbox Code Playgroud)
注意:我尝试使用/不使用导出:true
我试图检索存储在assets目录中的文件的引用到名为的文件myfile.pdf.我试过这样做:
File file = new File("android_assest/myfile.pdf);
Log.d("myTag", "" + file.isFile());
Run Code Online (Sandbox Code Playgroud)
不知何故,false当目录中myfile.pdf存在do 时,我得到了assets.我验证使用它getAssets().list("")和Log.d()返回的数组中的每个元素.
更多其中,我试图获取PDF文件的参考,然后使用已安装在设备上的任何PDF查看器,以便查看PDF.
我想自从上一个问题(检索对文件的引用)返回false后,下一个剪切代码失败:
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("file:///android_asset/myfile.pdf"));
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
任何人都有一个线索,为什么我无法检索文件的引用?为什么我不能使用已安装的PDF查看器来显示PDF(在检索PDF文件的引用后)?
谢谢.
我使用经典的单例模式来存储我在初始活动(splash活动)中从webServices获取的数据,然后在整个应用程序中访问它.
我有一个启动活动导致MainActivity,它是带有片段的滑动菜单活动,初始片段是一个包含支持地图片段的片段.
我的问题是存储在单例内的数据,有时当应用程序进入后台(按下主页并移动到另一个应用程序)然后转到最近的应用程序并选择我的应用程序时,单例的数据为空,这会导致我的应用程序崩溃.
我花了几个小时检查我的单例是否按原样编写,如果我自己没有使它变为null,静态数据变为null的可能原因是什么.
在我搜索之后,我发现了一个非常简单的解释,解释了静态数据何时/为什么变为空--Android静态对象生命周期 @Samuh回答我引用
"因此,如果您创建一个Android应用程序并初始化一个静态变量,它将保留在JVM中,直到发生以下情况之一:1.该类被卸载2. JVM关闭3.进程死亡"
关于#1和#2 - 我真的不知道这些何时发生.
关于#3 - 这非常好,好像用户将从"最近的应用程序"中点击我的应用程序,这将调用我的情况"启动活动"中的启动器活动,这将从服务器获取数据(最新)并再次存储它在我的单身内部 - 完美!,这正是我的其他应用程序中发生的事情,区别在于我没有使用滑动菜单和片段,只有活动.在我的情况下,从后台返回不会调用启动器Activity,它是"启动画面",但会调用MainActivity(主滑动菜单活动)以及初始片段,当我尝试从我的单例访问数据时所有数据在它内部是null,单例本身不是null,因为在片段的onCreate()我使用getInstance().我相信这意味着单例丢失了,现在重新创建,里面没有数据,所以如果进程是为什么我没有回到发射器活动?
希望有人可以提前帮助,谢谢.
我的单身课程:
public class MySingleton {
// some private data members with getters/setters
private String x,y,z;
// the instance
private static MySingleton theInstance = null;
//private ctor
private MySingleton(){
//doing something
}
//get instance
public static synchronized MySingleton getInstance() {
if (theInstance == null)
theInstance = new MySingleton ();
return theInstance;
}
}
Run Code Online (Sandbox Code Playgroud)