当前位置: 首页 > 知识库问答 >
问题:

如何从Android应用程序中获取URI

巢睿
2023-03-14

我已经从谷歌阅读了这个标准描述:https://developer.android.com/training/sharing/receive

在此之后,我更新了我的AndroidManifest.xml,以包括一个意图过滤器来接受来自其他应用程序的共享(对于各种哑剧类型)。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="SnapLinx Share"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
            <data android:mimeType="text/*" />
            <data android:mimeType="video/*" />
            <data android:mimeType="audeo/*" />
            <data android:mimeType="application/*" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SignInActivity"
        android:label="@string/title_activity_sign_in"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
    <activity
        android:name=".SignUpActivity"
        android:label="SignUpActivity"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
    <activity
        android:name=".ForgotPasswordActivity"
        android:label="ForgotPasswordActivity"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="SnapLinx Share"
        android:theme="@style/AppTheme">
    </activity>

    <service
        android:name=".BLEScanIntentSvc"
        android:enabled="true"
        android:exported="false">
    </service>
    <service
        android:name=".NotificationIntentSvc"
        android:exported="false">
    </service>
</application>

我可以将我的应用程序视为其他应用程序中的共享选项,当我在其他应用程序中选择一个文件(例如,照片应用程序中的图像文件)并选择与我的应用程序共享的选项时,我的应用程序启动得很好。首先,我尝试在MainActivity onCreate()中简单地记录共享参数。请参阅此代码:

    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    / First try at getting Uri obj.
    Uri FileURI = intent.getData();

    if (Intent.ACTION_SEND.equals(action) && type != null)
    {
        Log.i(LOGTAG, "File intent. Type: " + type);
        Log.i(LOGTAG, "File intent. Action: " + action);


        FileURI = (Uri) intent.getParcelableExtra(Intent.EXTRA_TEXT);
        if (FileURI != null)
        {
            Log.i(LOGTAG, "File intent. URL: " + FileURI.toString());
        }
    }

检索到的操作和类型字符串(“android.intent.action.SEND”和“image/*”)是正确的,但我无法获取从照片应用程序共享的文件的Uri。意图getData()和intent。getParcelableExtra(Intent.EXTRA_TEXT)和Intent。getParcelableExtra(Intent.EXTRA\u STREAM)始终返回null。

如果我闯入调试器,所有的意图属性(期望支持Uri访问)看起来都是null(即mCatagories=null,mClipData=null,mData=null,mExtras=null)。

标志由mFlags=524288表示......不确定这是否有帮助。

我正在构建编译SDK和目标SDK,两者都是28,最小SDK是23。

我的测试设备是运行8.0.0的Galaxy S7。

如有任何建议,不胜感激。

马克·J

共有1个答案

陆俊捷
2023-03-14

尝试使用Intent。额外的流,而不是意图。额外文本。像这样(Uri)的意图。getParcelableExtra(Intent.EXTRA\u流);

 类似资料:
  • 很抱歉,我可以提前找到一个更好的题目。我在这里解释一下。 我正在用启动一个activity,现在用户执行了一些任务,结果数据生成了,用户决定关闭应用程序,而不是按下后退按钮。现在我如何获取结果数据,因为当用户关闭应用程序时,没有调用,并且我无法将结果数据保存到数据库。 如果你能给我提供示例代码或者只是Expalanation就好了。

  • 我把我的应用放到Google Play,现在我做一些事情,比如添加新功能,新UI等,然后重新上传应用到Google Play。 所以我想,当用户启动应用程序时,如果有新的更新,显示一个对话框提醒用户,允许他们更新最新版本。 谷歌似乎没有提供任何API来获得应用版本,那么有什么解决方案可以做吗?

  • 问题内容: 我是天蓝色的新手,我不知道如何连接到在Azure数据库上创建的表。我想获取表数据(SELECT *)并将其填充到android的GridView中。我知道使用适配器的“填充”部分,我只想知道如何连接和接收表中的数据:) 我已经尝试过Microsoft的本教程,但是在将同一教程应用于我的方案时遇到了一些困难。 这是我尝试过的: 在这种情况下如何指定SQL SELECT查询?看起来这段代码

  • 我尝试过各种各样的解决方案,从堆栈溢出没有运气。我想要什么。 我知道不同应用程序的包名 例如,我有一个包名。如何获取此应用程序图标并在ImageView中显示?

  • 我试图返回存储在android手机中的真实照片路径。它对我的4.4有效。2手机,但使用5.0时。2电话,返回的路径为空 这是我的代码,从意图中获取真实的照片路径。以Uri形式获取数据(content://com.android.providers.media.documents/document/image:3061), 这是我启动库应用程序的代码:

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?