两个app
cn.basicconstruction.example
com.luckyxmoible.mymemo
调用逻辑,两个都是自己的软件。
主要逻辑代码:
com.cn.basicconstruction.example.MainActivity.java
Intent intent = new Intent(Intent.ACTION_PICK,Uri.parse("contents://bluediary"));
startActivity(intent);
cn.basicconstruction.example.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="cn.basicconstruction.example">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.nfc" android:required="false"/>
<queries>
<package android:name="com.luckyxmoible.mymemo" />
</queries>
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Example">
<activity android:name=".MainActivity" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Act2">
</activity>
</application>
</manifest>
com.luckyxmoible.mymemo.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.luckyxmoible.mymemo">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"
tools:ignore="ProtectedPermissions" />
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Mymemo"
android:windowSoftInputMode="adjustPan">
<activity android:name=".MainActivity" android:launchMode="singleTask"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PreferencesActivity"
>
<intent-filter>
<action android:name="android.intent.action.MANAGE_NETWORK_USAGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".AddDiaryActivity" android:theme="@style/Theme.AppCompat.NoActionBar"
android:launchMode="singleTask"
>
<intent-filter>
<action android:name="android.intent.action.PICK"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="contents" android:host="bluediary"/>
</intent-filter>
<intent-filter>
<action android:name="com.luckyxmoible.mymemo.add_new_diary.app"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<!-- filter for sending text or images; accepts SEND action and text or image data -->
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".ShowDiaryDetails" android:theme="@style/Theme.AppCompat.NoActionBar"
android:launchMode="singleTask">
</activity>
</application>
</manifest>
额外解释:在com.luckyxmoible.mymemo.AndroidManifest.xml中的AddDiaryActivity这个Activity的注册信息中,android:exported="true"不必显式声明,这个值的默认值即为true。
我们给AddDiaryActivity的注册信息中添加了
<intent-filter>
<action android:name="android.intent.action.PICK"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="contents" android:host="bluediary"/>
</intent-filter>
在这里我们使用的是android的动作,pick和send并且没有进行额外添加任何mimeType,在调用时也没有添加任何其他信息。
注意:在cn.basicconstruction.example.AndroidManifest.xml中我们声明了
这个或许不是必须的
<queries>
<package android:name="com.luckyxmoible.mymemo" />
</queries>
在https://developer.android.com/training/basics/intents/package-visibility?hl=zh-cn中有更详细的介绍。
按照理解来说,就是使得引入包的activity可见。
注意:我们并未引入 另一个Activity的声明在这一个程序的AndroidManifest.xml.
原文:
查询特定软件包及与之交互
如果您知道要查询或与之交互的一组特定应用(例如,与您的应用集成的应用或您使用其服务的应用),请将其软件包名称添加到?<queries> ?元素内的一组?<package> ?元素中:
<manifest package="com.example.game">
? ? <queries>
? ? ? ? <package android:name="com.example.store" />
? ? ? ? <package android:name="com.example.services" />
? ? </queries>
? ? ...
</manifest>
更多:https://blog.csdn.net/qq475703980/article/details/78941370?
|